我已使用jquery-ui自动完成输入框并设置了所选项目的隐藏值。

这是我使用的

 select: function(event, ui) { ...$("#myDiv").val(ui.item.value)... }

选项(现在可能是错误的,手头没有代码,但是直到我提出问题为止,它才起作用...)

当使用鼠标从菜单中选择一个项目时,它可以工作,但是,如果我只是输入一些文本并使用Enter选择一个项目-它什么也没做,就好像自动完成功能完全没有执行选择。但是,即开即用的选项卡触发选择。

我使用了焦点和更改:还更新了我想要的字段,但是我认为这实在是太过分了,如果确实有必要指定所有焦点,更改和选择,只是为了确保用户从中选择一个项目该列表实际上将被选中。

谢谢你。

rofly:我正在使用jquery-ui自动完成功能,它具有您提供的代码,但是看起来像这样(来自jquery.ui.autocomplete.js)

case keyCode.ENTER:
                case keyCode.NUMPAD_ENTER:
                    // when menu is open or has focus
                    if ( self.menu.active ) {
                        event.preventDefault();
                    }
                    //passthrough - ENTER and TAB both select the current element
                case keyCode.TAB:
                    if ( !self.menu.active ) {
                        return;
                    }
                    self.menu.select( event );
                    break;

这看起来很花哨,所以我不确定是否因此而失败。

我的代码是这样的(包装在document.read()中
$("#someDiv").attr("autocomplete", 'off');
$("#someDiv").autocomplete({
source: function(request, response) {
if ( request.term in cache ) {
response( cache[ request.term ] );
return;
}
$.ajax({
url: "giveMeJSON.jsp",
dataType: "json",
data: request,
success: function( data ) {
cache[ request.term ] = data;
response( data );
}
})},
minLength: 1,
delay: 300,
select: function(event, ui) {
$("#someDiv").val(ui.item.label);
$("#hiddenDiv").val(ui.item.value);
}
});

因此,问题是,当用户使用鼠标AND从菜单中进行选择并且在字段外进行制表(keyUp,keyDown进行选择,然后退出)时,此方法起作用了,而keyUp,keyDown进行了选择,然后输入,并且可行了。没发生什么事!

最佳答案

类似的实例适用于jQuery 1.4.2和jQuery-ui 1.8.7。请注意,仅在从列表中选择一项时,Enter才起作用。如果要创建不存在的新条目,则按Enter不会触发选择或更改事件。我必须绑定(bind)一个单独的事件处理程序以使这种情况发生。

10-07 19:49
查看更多