JQueryUI Значение автозаполнения, отличное от метки
У меня есть jQuery UI Autocomplete
, который отлично работает, если возвращаемый объект 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"}]
Ответы
Ответ 1
Там нет встроенного способа сделать это. Вместо этого вы должны переопределить событие 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
});