Javascript jQuery UI自动完成:是否禁用选项卡完成?
Javascript jQuery UI自动完成:是否禁用选项卡完成?,javascript,jquery,jquery-ui,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui,Jquery Ui Autocomplete,如何禁用使用Tab键选择当前/突出显示的项目?我只想按Enter键填充。Tab并不是真正选择当前项目,而是将光标移动到下一个可使用Tab键的项目。因此,您需要做的是禁用自动完成选项卡: select: function(e, ui) { if(e.keyCode === 9) return false; // other code... } 像这样的东西对我有用,你可能需要再修改一些 基本上,在将keydown事件传递给autocomplete keydown处理程序之前捕
如何禁用使用Tab键选择当前/突出显示的项目?我只想按Enter键填充。Tab并不是真正选择当前项目,而是将光标移动到下一个可使用Tab键的项目。因此,您需要做的是禁用自动完成选项卡:
select: function(e, ui) {
if(e.keyCode === 9) return false;
// other code...
}
像这样的东西对我有用,你可能需要再修改一些
基本上,在将keydown事件传递给autocomplete keydown处理程序之前捕获它。捕获它时,您可以做任何您想做的事情(传递或不传递)。在jquery ui中使用.autocomplete()修饰符时,它会将输入文本框的按键处理程序设置为如下所示。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
将取消置于按键
事件中对我不起作用,但我们可以将其置于自动完成的选择
选项中:
select: function(e, ui) {
if(e.keyCode === 9) return false;
// other code...
}
忘了在JSFIDLE中包含jquery ui。我做了,但它对我不起作用。我只是更新了链接。现在它应该指向一个包含jQueryUI库的jsfissle。而且,你的提琴和你在回答中写的完全不一致(你这个不受约束的模糊分子)。显然我正在和提琴链接作斗争。。。让我试着想一想好吗。。。我修复了链接,我做了它,所以弹出窗口不会停留。我很确定它现在有你想要的行为。这听起来不对。如果是模糊事件触发了选择事件(通过tab聚焦下一个元素),那么当我单击另一个元素时,它也会触发,但这不会发生。另外,在你的小提琴中,你阻止我切换到下一个元素,这与我想要的正好相反。我希望能够在不触发选择的情况下切换到下一个输入。