jQueryUI自动完成值不同于标签

Lur*_*k21 16 jquery jquery-ui jquery-ui-autocomplete

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

label:name
value:name
Run Code Online (Sandbox Code Playgroud)

然后它搜索myname,当用户选择一个时,它会用myname填充输入框.

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

label:name
value:id
Run Code Online (Sandbox Code Playgroud)

当我这样做时,自动完成功能使用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);
            });
        }
    });
Run Code Online (Sandbox Code Playgroud)

而它正在回归的JSON:

[{"label":"My fancy name","value":"229"}]
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 11

没有内置的方法来做到这一点.相反,您应该覆盖该select事件,并自行更新该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
});
Run Code Online (Sandbox Code Playgroud)