jQuery UI Autocomplete: отключить завершение вкладки? - PullRequest
6 голосов
/ 23 июня 2011

ссылка

Как отключить использование клавиши Tab для выбора текущего / выделенного элемента? Я хочу только Введите , чтобы заполнить его.

Ответы [ 3 ]

6 голосов
/ 24 июля 2011

Пример Райана помещения отмены в событие keypress у меня не сработал, но мы можем поместить его в опцию select автозаполнения:

select: function(e, ui) {
    if(e.keyCode === 9) return false;
    // other code...
}
3 голосов
/ 23 июня 2011

Когда вы используете модификатор .autocomplete () в jquery-ui, он устанавливает обработчик нажатия клавиш для вашего текстового поля ввода следующим образом.Self.menu.select устанавливает для текстового поля текущее выделенное значение в списке автозаполнения

.bind( "keydown.autocomplete", function( event ) {
...
switch( event.keyCode ) {
...
case keyCode.TAB:
    if ( !self.menu.active ) {
       return;
    }
    self.menu.select( event );
    break;
...
    }
}

Итак, вам нужно убедиться, что этот обработчик не вызывается.Я смог сделать это, добавив обработчик к нажатию клавиши, который возвращает ложное значение из обработчика, если нажатие клавиши TAB .

$( "#tags" ).autocomplete({
        source: availableTags
    });
$("#tags").keypress(function(e){
    if(e.keyCode == keyCode.TAB) {
        e.stopImmediatePropagation();
    }
});

Результат можно увидеть здесь.

1 голос
/ 23 июня 2011

Tab на самом деле не выбирает текущий элемент, он перемещает курсор к следующему элементу с возможностью вкладки.Так что вам нужно сделать, это отключить вкладку для автозаполнения:

Блокировка клавиши табуляции с помощью javascript?

Что-то вроде этого работает для меня, возможно, вам придется изменитьэто еще немного.

http://jsfiddle.net/Uubn6/

По сути, вы фиксируете событие нажатия клавиши до его передачи в обработчик автозаполнения.Когда вы его захватываете, вы можете делать все, что захотите (передать или нет).

...