JQuery автозаполнение ручного ввода - PullRequest
0 голосов
/ 22 декабря 2011

вот сценарий 1: пользователь начинает вводить какое-то слово, механизм автозаполнения показывает список подсказок (после запроса ajax). Пользователь нажимает на какой-то элемент из этого списка. Событие выбора сработало. Все хорошо.

Сценарий 2: пользователь начинает вводить какое-то слово, механизм автозаполнения показывает список подсказок (после запроса ajax). Но на этот раз пользователь не нажимает на элемент и переходит в другое поле. Событие выбора не было запущено. Но введенное пользователем значение верно. Как я могу вызвать событие выбора вручную? Спасибо.

1 Ответ

2 голосов
/ 22 декабря 2011
$(document).on('blur', "#inputField", function () {

  $(this).trigger('autocompleteselect');

});

По предложению Картика, объяснение: свяжите обработчик для события размытия поля ввода, чтобы, когда пользователь покидает поле, оно запускалось.Затем эта функция вызывает триггер события autocompleteselect, которое (теоретически) также должно быть связано с этим полем ввода.Так как nKognito говорит, что это не работает ... ну, я думаю, мне нужно увидеть еще немного кода, прежде чем я смогу продолжить поиск неисправностей.

edit

Хорошо, основанона вашем jsfiddle я пытался, но не смог запустить триггер для autocompleteselect для работы.Итак, теперь я предлагаю это вместо:

var list = [{id:1,Name:"John"},{id:2,Name:"Johna"}];
$('#a').autocomplete({
            source: function(request, response) {
                response($.map(list, function(item) {
                            return {id : item.id, label : item.Name};
                        }));
            },
            minLength: 2,
            select: function () { selectHanlder(this) }
        }).blur(function () { selectHandler(this) });


 function selectHandler(this) {
                // do what you will
            }

Это просто вызовет тот же обработчик, что и autocompleteselect, для события blur.Должен быть таким же в силе.

...