Опция закрытия автозаполнения JQuery при нажатии за пределами - PullRequest
5 голосов
/ 13 сентября 2011

Я хотел бы знать, есть ли способ в JQuery Autocomplete, когда открываются опции, если я нажимаю OUTSIDE в поле опций, чтобы выбрать, или нажимаю ESCAPE на клавиатуре.Он закрывается, без необходимости выбирать один вариант.

Кто-нибудь знает правильный способ сделать это?Все еще думал использовать что-то, чтобы проверить, если фокус автозаполнения, если не закрыть его, но это просто ИДЕЯ.

Спасибо

Ответы [ 2 ]

8 голосов
/ 13 сентября 2011

Просто закрыть автозаполнение при закрытии диалога:

$("#dialog").dialog({
    close: function() {
        $('#tags').autocomplete('close');
    }
});

См. Это в действии: http://jsfiddle.net/william/3Yz9f/1/.


Обновить

Это зависит от того, что вы подразумеваете под «общим».JavaScript очень ориентирован на события.Итак, изначально вы хотите, чтобы автозаполнение закрывалось при закрытии диалога, отсюда и первая часть ответа.Конечно, вы можете связать его с некоторыми косвенными событиями, такими как автозаполнение размытия или скрытия (вам может потребоваться сделать специальное событие для скрытия), но это дает вам небольшой риск того, что они могут не сработать, так как они являются косвенными.

Теперь вы хотите, чтобы он закрывался при перетаскивании диалога;ну, это тоже не сложно;Вы можете достичь этого с помощью события dragStart для диалога, но это два разных события, оба в диалогах, а не в автозаполнении.Я не вижу каких-либо косвенных событий в самом виджете автозаполнения при перетаскивании диалогового окна.

Если ваша проблема связана с виджетом автозаполнения по идентификатору, вы можете использовать контекстный селектор, например, использовать $('.ui-autocomplete-input', this)чем $('#tags') в обработчиках диалога.

3 голосов
/ 19 октября 2011

Я столкнулся с той же проблемой.Есть только одна маленькая вещь, которую вы должны сделать.После вызова метода 'search' установите фокус.Esc и нажатие за пределами окна закроют раскрывающийся список.

Я использую подкласс категории (http://jqueryui.com/demos/autocomplete/#categories), поэтому мой код выглядит как

  $( "#search" ).catcomplete('search');
  $( "#search" ).focus();

Я ожидаюон также будет работать и с виджетом .autocomplete.

...