Получить выбранный объект из jQuery Autocomplete - PullRequest
1 голос
/ 11 октября 2011

Я использую jQuery 1.8 Автозаполнение .

Есть ли способ получить выбранный объект вне одного из обработчиков событий?

Я пытаюсьсделать что-то вроде ...

 $("#searchUsers").autocomplete({
        source: 'Users/List',
  });

  $("#addUser").click(function() {
       // get the selected user Id
       var item = $("#searchUsers").autocomplete('selected');
       alert(item.Id);
  });

Я не вижу никакого способа сделать это, но это кажется довольно очевидным требованием.

Ответы [ 4 ]

0 голосов
/ 21 апреля 2018

Старый вопрос, но все же ...

Просто определите переменную JavaScript и в событии select установите object на эту переменную.Например:

$(function () {
    var object_selected= -1;
    $("#q").autocomplete({
            source: "path/to/jsondata",
            minLength: 3,
            select: function (event, ui) { //This is the event that you need to implement
                $('#q').val(ui.item.value);
                object_selected = ui.item; //This is what you will use later.
                return true;
            }
    });
});
0 голосов
/ 11 октября 2011

добавьте событие select в функцию автозаполнения:

search: function (event, ui) {
        $("#searchUsers").val('');
    },
select: function (event, ui) {
   foo = ui.item.label;
    $("#bar").val(ui.item.id);
   baz = (ui.item.JsonField);
}

посмотрите на вкладку События здесь

редактирование: добавил событие search в функцию. Я использую событие search для очистки полей / переменных каждый раз, когда пользователь выполняет поиск

0 голосов
/ 12 июля 2015

Я бежал к той же проблеме.Я мог бы получить доступ к выбранному предмету как к объекту.

$("#searchUsers").data("autocomplete").selectedItem
0 голосов
/ 11 октября 2011

Поведение по умолчанию заключается в том, что при выборе элемента значение помещается в текстовое поле.Таким образом, вы можете получить его, просто набрав $("#searchUsers").val().

Если вам нужна дополнительная информация о выбранном элементе, вам нужно передать обработчик события select, а в этом обработчике сохранить информацию в другом месте.

...