如何禁用 Tab 键来选择当前/突出显示的项目?我只想输入来填充它。
答案 0 :(得分:6)
keypress
事件的 Ryan's example对我不起作用,但我们可以将其置于自动填充的select
选项中:
select: function(e, ui) {
if(e.keyCode === 9) return false;
// other code...
}
答案 1 :(得分:3)
在jquery-ui中使用.autocomplete()修饰符时,它会将输入文本框的keypress处理程序设置为如下所示。 self.menu.select将文本框设置为自动完成列表中当前突出显示的值
.bind( "keydown.autocomplete", function( event ) {
...
switch( event.keyCode ) {
...
case keyCode.TAB:
if ( !self.menu.active ) {
return;
}
self.menu.select( event );
break;
...
}
}
所以你需要做的就是确保不会调用这个处理程序。我能够通过向keypress添加一个处理程序来执行此操作,如果keypress是 TAB ,则会从处理程序返回false。
$( "#tags" ).autocomplete({
source: availableTags
});
$("#tags").keypress(function(e){
if(e.keyCode == keyCode.TAB) {
e.stopImmediatePropagation();
}
});
答案 2 :(得分:1)
Tab实际上没有选择当前项目,它正在将光标移动到下一个可选项目。所以你需要做的是禁用自动填充的标签:
这样的事情对我有用,你可能需要再修改一下。
基本上,在将keydown事件传递给自动完成keydown处理程序之前捕获它。当你捕获它时,你可以做任何你想做的事情(传递与否)。