Как мога да деактивирам използването на клавиша Tab за избор на текущия/маркирания елемент? Искам само Enter да го попълни.
Автоматично довършване на jQuery UI: Да се деактивира ли довършването на раздели?
Отговори (3)
Примерът на Райън за поставяне на анулирането в събитието keypress
не успя не работи за мен, но можем да го поставим в опцията select
на автоматичното довършване:
select: function(e, ui) {
if(e.keyCode === 9) return false;
// other code...
}
Когато използвате модификатора .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;
...
}
}
Така че това, което трябва да направите, е да гарантирате, че този манипулатор няма да бъде извикан. Успях да направя това, като добавих манипулатор към натискането на клавиш, който връща false от манипулатора, ако натискането на клавиш е TAB.
$( "#tags" ).autocomplete({
source: availableTags
});
$("#tags").keypress(function(e){
if(e.keyCode == keyCode.TAB) {
e.stopImmediatePropagation();
}
});
Можете да видите резултата тук.
autoFocus
(избира първия елемент) май вече не работи...
- person mpen; 24.07.2011
Tab всъщност не избира текущия елемент, той премества курсора към следващия елемент с възможност за разделяне. Така че това, което трябва да направите, е да деактивирате раздела за автоматично довършване:
Да се заключи ли раздела с javascript?
Нещо подобно работи за мен, може да се наложи да го промените още малко.
По принцип улавяте събитието за натискане на клавиша, преди да го предадете на манипулатора за автоматично попълване на натискане на клавиш. Когато го заснемете, можете да правите каквото искате (преминавате или не).