我使用了jquery-ui来自动完成输入框,并从所选项中设置隐藏值。
这是我使用的方式:
这是我使用的方式:
select: function(event, ui) { ...$("#myDiv").val(ui.item.value)... }
选项(现在可能有误,手头没有代码,但它在我的问题之前是有效的...)
当我用鼠标从菜单中选择项目时,它可以正常工作,但是如果我只输入一些文本并使用Enter选择一个项目,则不起作用,就好像自动完成函数根本没有运行选择。然而,从框中切换出来时会触发选择。
我已经使用了focus和change来更新我想要的字段,但我认为这有点过度,难道必须指定所有的focus、change和select才能确保无论用户如何从列表中选择项目都会被选中吗?
谢谢。
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选择相应的选项,然后按Enter键,却没有任何反应。
myDiv
...也许change: function(event, ui) { ...$("#myDiv").val(ui.item.value)... }
可以起作用。 - Ties