jQuery UI自动完成:禁用选项卡完成?

时间:2011-06-23 00:02:27

标签: javascript jquery jquery-ui jquery-ui-autocomplete

reference

如何禁用 Tab 键来选择当前/突出显示的项目?我只想输入来填充它。

3 个答案:

答案 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();
    }
});

You can see the result here.

答案 2 :(得分:1)

Tab实际上没有选择当前项目,它正在将光标移动到下一个可选项目。所以你需要做的是禁用自动填充的标签:

Lock tab key with javascript?

这样的事情对我有用,你可能需要再修改一下。

http://jsfiddle.net/Uubn6/

基本上,在将keydown事件传递给自动完成keydown处理程序之前捕获它。当你捕获它时,你可以做任何你想做的事情(传递与否)。