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

标签 jquery jquery-autocomplete jquery-ui-autocomplete

使用下面的代码将 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/

相关文章:

javascript - 如何在 jQuery 中解析 JSON 响应?

mysql - Javascript 自动完成列出 MySQL 结果

css - easyautocomplete 滚动问题

PHP 代码返回特殊德语字符的 HTML 实体

jquery - 无法使用 jQuery 更新复选框的选中状态

javascript - JQuery读取、解析、显示文本文件并统计结果

jquery-plugins - 自动完成 jquery

django-ajax-选择应用程序 : How do I create a new object when there isn't already one in the database?

jQuery UI 自动完成 : Tell It My 'Label' and 'Value'

javascript - 如何: Reduce font-size if a line breaks