【问题标题】:How to prevent opening jqueryUI autocomplete drowpdown on fast entry如何防止在快速输入时打开 jquery UI 自动完成下拉菜单
【发布时间】:2011-09-05 16:06:28
【问题描述】:

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

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

input 包含 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');
        }
    });

【问题讨论】:

  • 你有没有想过这个问题?我有一个类似的问题,如果我输入非常快并在自动完成出现之前按回车,当部分回发完成时,它会在页面的左上角显示下拉菜单。
  • 我还没有解决这个问题。 jquery ui 自动完成错误跟踪器包含类似的问题和修复。您可以尝试应用此修复程序,使用 svn 中的 jqueryui 或等待下一个版本(可能是 2012 年 1 月)。如果您有这方面的新信息,请告诉我们。

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


【解决方案1】:

本来想在评论区写一个回复,但是想附上一些代码。

我基本上和你做了同样的事情,并为enter 键绑定了一个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 方法在部分回发时被调用时,它将重建自动完成对象。我担心这可能不是最聪明或最有效的方法,但它似乎有效......

【讨论】:

  • 我的应用程序中有类似的代码。如果用户在其他单元格中快速单击,下拉菜单仍然保持打开状态。模糊无法取消,如果服务器 ajax 调用完成,模糊后可能会打开下拉菜单。
  • 谢谢。这种方法假定表单已提交。如果快速按下 Tab 键移动到下一个字段或单击其他字段,在这种情况下如何禁用下拉菜单出现?也许可以检查当前的自动完成是否在 ajax 调用竞争事件中具有焦点或在模糊事件中设置属性以对此进行判断。您是否尝试过 git hub 中的 jquery ui 自动编译?
  • 嗨,你们俩都设法解决这个问题了吗? @Andrus 还是 Emmanuel?
  • @RicL;上面的内容当时对我有用,但是,这个用于其他用途的模块被废弃了,所以这一切都成了一个有争议的问题。我认为它会起作用,但@Andrus 对他关于快速标签的最后评论有一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2021-07-01
  • 2013-01-18
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多