我已经使用
jquery-ui自动完成输入框并从所选项目中设置隐藏值.
我这样做了
select: function(event,ui) { ...$("#myDiv").val(ui.item.value)... }
选项(现在可能有问题,手头没有代码,但直到我的问题……)
当使用鼠标从菜单中选择一个项目时它可以工作,但是如果我只是输入一些文本并选择一个带有回车的项目 – 它什么都不做,就好像自动完成功能根本不运行选择.但是,开箱即用的标签会触发选择.
我已经使用了焦点并进行了更改:还要更新我想要的字段,但我认为这有点过分,如果确实需要指定所有焦点,更改和选择,只是为了确保用户从中选择一个项目它实际上会被选中的列表.
谢谢.
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); } });
所以,问题是,当用户使用鼠标选择菜单时,当用于从字段中选择时键入(keyUp,keyDown选择然后选项卡输出,工作),但keyUp,keyDown选择它,然后输入,以及什么都没发生!
解决方法
类似的实例适用于jQuery 1.4.2和jQuery-ui 1.8.7.需要注意的是,只有在从列表中选择项目时,Enter才会起作用.如果要创建不存在的新条目,请按Enter键不会触发选择或更改事件.我不得不绑定一个单独的事件处理程序来使这种情况飞起来.