使用下面的代码将 jQueryUI 自动完成功能添加到输入文本元素中。 如果输入文本并快速按下 Tab,光标将移动到其他列,但自动完成菜单保持打开状态。
在这种情况下如何防止打开自动完成菜单。 也许模糊事件应该终止自动完成 droppdowm 菜单数据检索调用,以便 从服务器收到数据或类似内容后,下拉菜单未打开? 我尝试添加 input.autocomplete('close') 来模糊,但这没有帮助。 在从服务器检索数据之前和打开自动完成之前可能会发生模糊。
输入包含输入类型='text'对象引用。
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
键绑定(bind)了 keydown
关闭 autocomplete
然后调用 click附加到搜索框的按钮上的
事件。
$('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
方法时,它将重建自动完成对象。我担心这可能不是最聪明或最有效的方法,但它似乎有效......
关于jquery - 如何防止在快速输入时打开 jquery UI 自动完成下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310425/