Автозаполнение Jquery не запускается с входным значением, установленным JavaScript - PullRequest
0 голосов
/ 04 марта 2019

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

Часть виджета идентична jqueryui site .Вот пример jsfiddle

//sample HTML
<input id="search">
<button id="button">Click</button>

//sample JS
$(document).on("keyup", '#search', function(event){
   $.ajax{
      ...
      autocomplete_data = ajax_provided_data;
      $("#search").catcomplete({
         source: function(request, response){
            console.log("source");
            response(autocomplete_data);
         },
         select: function(event, ui){
            //do stuff
         }
      });
   }
});

$(document).on("click", "#button", function(event){
   $("#search").val("abcd");
   $("#search").keyup();
});

Когда я нажимаю #button, значение входа изменяется, запускается keyup() и запускается Ajax.Однако catcomplete() не срабатывает.Это никогда не приводит к console.log в функции source.Если я вручную введу в поле ввода, все будет работать нормально, и в консоли будет напечатано «source».

Я также попытался this , чтобы вызвать нажатие клавиши пробела.Все еще не повезло.

Однако это сработает, если я нажму кнопку, а затем вручную введите пробел в поле ввода.

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 04 марта 2019

Я посмотрел на jquery-ui.js раздел автозаполнения.Для запуска функций полного автозаполнения должно произойти событие keydown или input.

Изменяя this , изменяя keyup на keydown, и оно 'сработает.

function ShowAutoComplete($field, searchVal) {
   var e = $.Event('keydown');
   e.which = 32;
   $field.val(searchVal).focus().trigger(e);
}

Рабочий jsfiddle

...