如何防止在快速输入时打开jquery UI自动完成下拉列表

时间:2011-09-05 16:06:29

标签: jquery jquery-autocomplete jquery-ui-autocomplete

使用下面的代码在表单中将jQueryUI自动完成添加到输入文本元素。 如果输入文本并快速按下标签,光标将移至其他列,但自动完成菜单仍保持打开状态。

在这种情况下如何防止打开自动完成菜单。 可能模糊事件应该终止自动完成drowpdowm菜单数据检索调用 从服务器或类似的东西收到数据后,下拉菜单没有打开? 我试图将input.autocomplete('close')添加到模糊但这没有帮助。 在从服务器检索数据之前和打开自动完成之前,可能会出现模糊。

输入包含input type ='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');
        }
    });

1 个答案:

答案 0 :(得分:1)

我打算在评论部分写一个回复,但我想附上一些代码。

我基本上和你做了同样的事情并绑定keydown enter键关闭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

似乎是人们可以做的最直接的事情。我在下一个版本中读到了一些关于修复的地方,但是现在,我认为这个解决方案可行。

编辑:更新了代码以禁用自动填充,允许点击通过,当包含的{{1}}方法在部分回发时被调用时,它将重建自动完成对象。我担心它可能不是最聪明或最有效的方式,但它似乎有用......