Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止在快速进入时打开jqueryUI自动完成drowpdown_Jquery_Jquery Autocomplete_Jquery Ui Autocomplete - Fatal编程技术网

如何防止在快速进入时打开jqueryUI自动完成drowpdown

如何防止在快速进入时打开jqueryUI自动完成drowpdown,jquery,jquery-autocomplete,jquery-ui-autocomplete,Jquery,Jquery Autocomplete,Jquery Ui Autocomplete,JQueryUIAutoComplete是使用下面表单中的代码添加到输入文本元素的。 若输入文本并快速按下制表符,光标将移动到另一列,但“自动完成”菜单将保持打开状态 如何防止在这种情况下打开自动完成菜单。 可能blur事件应该终止autocomplete drowpdowm菜单数据检索调用,以便 从服务器或类似设备接收数据后,下拉菜单未打开? 我尝试将input.autocomplete('close')添加到模糊中,但这没有帮助。 模糊可能发生在从服务器检索数据之前和打开自动完成之前 输入包

JQueryUIAutoComplete是使用下面表单中的代码添加到输入文本元素的。 若输入文本并快速按下制表符,光标将移动到另一列,但“自动完成”菜单将保持打开状态

如何防止在这种情况下打开自动完成菜单。 可能blur事件应该终止autocomplete drowpdowm菜单数据检索调用,以便 从服务器或类似设备接收数据后,下拉菜单未打开? 我尝试将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
键绑定了一个
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最后一句关于快速标签的评论是有道理的。