通过使用自动完成jquery获取id

时间:2014-05-29 06:40:49

标签: jquery autocomplete

我试图插入ui.item.id(来自控制器的ivlist.ivac_id) 进入<input type="text" id="vac_ivac_id" name="vac_ivac_id"/> 但它没有用。

我认为我对ui做了一些错误,或者选择:function。我过去几个小时一直在谷歌上搜索自动完成功能,但无法找到错误。

下面我附上了我的源代码:

$(function () {
    $('#vac_name').autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "${pageContext.request.contextPath}/searchIVac.do",
                data: {
                    search: $("#vac_name").val()
                },
                dataType: "json",
                type: "post",
                success: function (jsonData) {
                    response($.map(jsonData.ivlist, function (item) {
                        return {
                            value: item.ivac_name,
                            label: item.ivac_name,
                            id: item.ivac_id
                        };
                    }));
                },
                select: function (event, ui) {
                    alert(ui.item.id);
                    $("#vac_ivac_id").val(ui.item.id);
                },
                selectFirst: false,
                minLength: 2,
                focus: function (event, ui) {
                    $('#vac_name').val(ui.item.label);
                    return false;
                },
            });
        }

    });
});
<table>
    <tr>
        <td>
            <input type="text" id="vac_name" name="vac_name" />
            <input type="hidden" id="vac_ivac_id" name="vac_ivac_id" value="0" />
        </td>
    </tr>
</table>

1 个答案:

答案 0 :(得分:0)

我认为你没有正确关闭source / ajax调用括号/大括号。

如果您查看代码,则自动完成功能位于ajax选项内,而不是自动完成的一部分。

正确的代码必须是:

$(function () {
    $('#vac_name').autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "${pageContext.request.contextPath}/searchIVac.do",
                data: {
                    search: $("#vac_name").val()
                },
                dataType: "json",
                type: "post",
                success: function (jsonData) {
                    response($.map(jsonData.ivlist, function (item) {
                        return {
                            value: item.ivac_name,
                            label: item.ivac_name,
                            id: item.ivac_id
                        };
                    }));
                }
            }) //<--close the ajax call
        }, //<--close source option
        select: function (event, ui) {
            alert(ui.item.id);
            $("#vac_ivac_id").val(ui.item.id);
        },
        selectFirst: false,
        minLength: 2,
        focus: function (event, ui) {
            $('#vac_name').val(ui.item.label);
            return false;
        },
    });

});