我使用 jquery-ui 自动完成输入框并设置所选项目的隐藏值。
这是我使用的
select: function(event, ui) { ...$("#myDiv").val(ui.item.value)... }
选项(现在可能是错误的,手头没有代码,但它一直有效,直到我的问题......)
当用鼠标从菜单中选择一个项目时它可以工作,但是如果我只是输入一些文本并用 Enter 选择一个项目 - 它不会执行任何操作,就好像自动完成功能根本不运行选择一样。但是,按 Tab 键跳出框会触发选择。
我已经使用了焦点和更改:也更新了我想要的字段,但我认为这有点矫枉过正,是否真的有必要指定所有焦点、更改和选择,只是为了确保用户从中选择一个项目实际将被选择的列表。
谢谢。
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);
}
});
所以,问题是,当用户用鼠标从菜单中选择并且按 Tab 键移出字段时(用 keyUp、keyDown 选择然后按 Tab 键退出,有效),但用 keyUp、keyDown 选择 itme,然后输入,并且什么都没发生!