Остановить автозаполнение jQuery от фокусировки поля ввода после выбора из выпадающего списка - PullRequest
2 голосов
/ 13 октября 2010

Я использую плагин автозаполнения jQuery от http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/ Когда пользователь выбирает результат из раскрывающегося списка, поле ввода становится сфокусированным. Как я могу остановить плагин от этого? Я заставил это работать, используя подсказку из этого поста: плагин автозаполнения jQuery, не фокусирующийся на следующем нажатом поле Но это работает только тогда, когда пользователь использует мышь для выбора результатов. Тогда поле ввода не фокусируется. Но когда пользователь использует клавишу ENTER или клавишу TAB, ввод по-прежнему получает фокус.

Кто-нибудь знает, как я могу изменить это так, чтобы, когда пользователь выбрал значение из раскрывающегося списка, поле ввода не фокусировалось?

Заранее большое спасибо!

С уважением, Ким

Ответы [ 3 ]

2 голосов
/ 17 декабря 2010

Вид этой строки в функции selectCurrent() плагина:

$input.trigger("result", [selected.data, selected.value]);

... событие «результата» запускается на входе автозаполнения всякий раз, когда выбирается опция, мышью иликлавиатура.

Вы можете привязать к тому же событию и сделать акцент на следующем элементе управления в форме (я полагаю, это то, что вы хотите, а не просто удалить фокус из текущего элемента?):

$("input").bind("result", function () {

   // Get all controls on the form
   var controls = $(this).closest("form").find("input, textarea, select, button");

   // Find the index of the next control
   var nextIndex = controls.index(this) + 1;

   // Check if this is already the last control, so wrap around to the first one
   if (nextIndex >= controls.length) nextIndex = 0;

   // Put focus on the "next" control
   controls.eq(nextIndex).focus();

});
0 голосов
/ 28 августа 2016
$( "#to" ).autocomplete({
    source: availableTags,
    select: function (event, ui) {
        $( "#to" ).val( ui.item.label );
        $('#to').blur();
        return false ;
    }
});
0 голосов
/ 17 декабря 2010

Вы пробовали плагин автозаполнения jQuery UI ? Половина проблемы решена - когда вы нажимаете клавишу Tab, чтобы закрыть автозаполнение, поле ввода теряет фокус. При нажатии Enter он остается сфокусированным, но это легко исправить:

$('#myInput').keyup(function() {
  // when Enter is pressed
  if (event.which === 13) {
    $(this).blur();
  }
});

Редактировать

jQuery нормализует event объект, поэтому передача его в качестве аргумента не нужна.

...