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
});