我有一个jQuery UI自动完成,工作正常,如果返回的json对象如下所示:
label:name value:name
然后,它搜索我的名字,当用户选择一个时,它用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"}]
解决方法
没有内在的方法来做到这一点.相反,您应该覆盖
select
event,并自己更新输入值;
$("#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 });