【问题标题】:jQueryUI Autocomplete value different than labeljQueryUI自动完成值与标签不同
【发布时间】:2013-04-30 20:35:36
【问题描述】:

如果返回的 json 对象如下所示,我有一个可以正常工作的 jQuery UI Autocomplete

label:name
value:name

然后它通过 myname 进行搜索,当用户选择一个时,它会使用 myname 填充输入框。

但我想要的是 json 对象看起来像这样:

label:name
value:id

当我这样做时,自动完成会使用 id 编号而不是名称字符串填充输入框。

如何让自动完成功能将显示的文本设置为名称,将隐藏的值设置为值?

我在官方文档中看不到任何方法可以做到这一点。

这是我的自动完成功能:

$("#eventAccount").autocomplete({
        minLength: 2,
        source: function (request, response) {
            var term = request.term;
            if (term in cache) {
                response(cache[term]);
                return;
            }

            request.e = "getMyAccountAutocomplete";

            $.getJSON("/admin/ajaxController.php", request, function (data, status, xhr) {
                cache[term] = data;
                response(data);
            });
        }
    });

还有它返回的 JSON:

[{"label":"My fancy name","value":"229"}]

【问题讨论】:

标签: jquery jquery-ui jquery-ui-autocomplete


【解决方案1】:

没有内置的方法可以做到这一点。相反,您应该覆盖select event,并自己更新input 值;

$("#eventAccount").on("autocompleteselect", function (e, ui) {
    e.preventDefault(); // prevent the "value" being written back after we've done our own changes

    this.value = ui.item.label;
    // Put ui.item.value somewhere
});

【讨论】:

    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2010-10-11
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多