Обновление источника данных автозаполнение jQuery - PullRequest
0 голосов
/ 02 октября 2018

Я хочу обновить мой источник автозаполнения после события keyup в моем поле ввода.

Мой код следующий:

<div class="ui-widget">
    <input id="myInput" type="text">
</div>
var nb = data.length;
var myArray = [];
for (var i = 0; i < nb; i++) {
  myArray.push({
    value: data[i],
    label: data[i],
  });
}

$("#myInput").autocomplete({
  source: myArray,
  minLength: 1,
  select : function(event, ui) {
    // someCode;
  }
}).on("focus", function() {
  $(this).autocomplete("search");
});

При инициализации мой источник автозаполненияпустой массив.Массив обновляется каждый раз, когда пользователь нажимает клавишу.Проблема в том, что когда я заполняю myArray, список не отображается.Я должен нажать клавиши со стрелками (вверх или вниз), чтобы открыть список.

Более того, при выполнении нового поиска (еще одного ключа) с открытым списком он остается прежним, и мой список не обновляется.

Итак, у меня есть 2 вопроса:

  1. Как открыть список, когда пользователь фокусируется на поле ввода?
  2. Как обновить мой источник, когдасделать новый поиск?

Заранее спасибо!:)

1 Ответ

0 голосов
/ 02 октября 2018

Мне удалось сделать это самому, я знаю, что это не самый чистый ват, чтобы сделать это, но вот мое решение:

Уничтожить автозаполнение перед его воссозданием:

$("#myInput").autocomplete("destroy");

Заставьте его потерять фокус, а затем заставьте фокус на вводе:

$("#myInput").blur();
$("#myInput").focus();

Как я уже говорил, далеко не самое чистое, но прозрачное для пользователя ...

...