如何防止在快速进入时打开jqueryUI自动完成drowpdown
JQueryUIAutoComplete是使用下面表单中的代码添加到输入文本元素的。 若输入文本并快速按下制表符,光标将移动到另一列,但“自动完成”菜单将保持打开状态 如何防止在这种情况下打开自动完成菜单。 可能blur事件应该终止autocomplete drowpdowm菜单数据检索调用,以便 从服务器或类似设备接收数据后,下拉菜单未打开? 我尝试将input.autocomplete('close')添加到模糊中,但这没有帮助。 模糊可能发生在从服务器检索数据之前和打开自动完成之前 输入包含输入类型='text'对象引用如何防止在快速进入时打开jqueryUI自动完成drowpdown,jquery,jquery-autocomplete,jquery-ui-autocomplete,Jquery,Jquery Autocomplete,Jquery Ui Autocomplete,JQueryUIAutoComplete是使用下面表单中的代码添加到输入文本元素的。 若输入文本并快速按下制表符,光标将移动到另一列,但“自动完成”菜单将保持打开状态 如何防止在这种情况下打开自动完成菜单。 可能blur事件应该终止autocomplete drowpdowm菜单数据检索调用,以便 从服务器或类似设备接收数据后,下拉菜单未打开? 我尝试将input.autocomplete('close')添加到模糊中,但这没有帮助。 模糊可能发生在从服务器检索数据之前和打开自动完成之前 输入包
input.autocomplete({
source: 'GetLookupList',
position: { collision: 'flip flip' }
}
);
$(input).bind({
keydown: function (e) {
if (enter(e) || (e.ctrlKey && e.keyCode === 83)) {
input.autocomplete('close');
}
},
blur: function (e) {
input.autocomplete('close');
}
});
我打算在评论部分写一个回复,但我想附加一些代码 我基本上做了与您相同的事情,为
enter
键绑定了一个keydown
,关闭autocomplete
,然后在附加到搜索框的按钮上调用单击
事件
$('input[id$=MainSearchBox]').bind(
{
keydown: function(e)
{
if (e.which === 13)
{
$('input[id$=MainSearchBox]').autocomplete('close');
$('input[id$=MainSearchBox]').autocomplete('disable');
$('input[id$=MainSearchBoxGoButton]').click();
e.preventDefault()
return false;
}
}
});
似乎是一个人能做的最直接的事情。我在某个地方读到了关于下一个版本将要发布的修复程序的消息,但就目前而言,我认为这个解决方案是可行的
编辑:更新代码以禁用自动完成,允许单击,当它包含的
pageLoad
方法在部分回发中被调用时,它将重建自动完成对象。我担心这可能不是最聪明或最有效的方法,但它似乎有效…你有没有想过?我有一个类似的问题,如果我打字很快,在自动完成之前按enter键,当部分回发完成时,它会在页面的左上角显示下拉列表。我还没有解决这个问题。jQueryUI自动完成bug跟踪器包含类似的问题和修复。您可以尝试应用此修复程序,使用svn的jqueryui或等待下一个版本(可能是2012年1月)。请让我们知道,如果你有关于这方面的新信息。我有类似的代码在我的申请。如果用户在其他单元格中快速单击,DropDow仍然保持打开状态。blur无法取消,如果服务器ajax调用完成,则可能会在blur后打开下拉列表。谢谢。此方法假定表单已提交。如果快速按Tab键移动到下一个字段或在其他字段中单击,在这种情况下如何禁用下拉菜单?也许可以检查当前的autocomplete是否在ajax调用竞争事件中有焦点,或者在blur事件中设置属性以取消此项。你试过GitHub的jQueryUIAutoComplate吗?嗨,你们都找到了解决办法吗@安德鲁斯还是伊曼纽尔?@RicL;上面提到的这些在当时对我来说很有用,但是,这个模块被其他东西废弃了,所以这一切都成了一个没有意义的问题。我认为这会奏效,但@Andrus最后一句关于快速标签的评论是有道理的。