如果返回的jQuery UI Autocomplete
对象如下所示,我有json
可以正常工作:
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"}]
答案 0 :(得分:11)
没有内置方法可以做到这一点。相反,您应该覆盖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
});