文本输入上的Chome自动完成功能可防止keydown事件被触发(jquery)

时间:2012-08-03 13:40:45

标签: jquery html google-chrome

当使用键盘导航到自动完成选项并按[enter]时,其他浏览器(例如:Firefox 14.0.1)会触发此事件,但chrome(21.0.1180.60 m)不会触发此事件。我正在使用jquery来挂钩事件:

    $('input').keydown(function (event) {
        if (event.which == 13) {
            var $txt = $(this);
            //settimeout req. for firefox to append autocomplete
            setTimeout(function () {
                //**chrome doesn't get here until you hit enter a second time
            }, 0);

        }
   });​

此处示例: http://jsfiddle.net/a9vbe/4/

有人知道这里发生了什么或可能的解决方案是什么?使用keyup事件会“修复”问题,因为计算机比手指更快,但我宁愿不这样做。 Keydown(或Keypress)是首选。

1 个答案:

答案 0 :(得分:3)

在这样的实例中执行keyup没有错,特别是因为它修复了问题。问题是数据列表没有足够快地填充文本框,以便keydown事件触发输入上的事件。那时你仍然专注于数据主义者本身。这是keyup的一个好处的一个主要例子。

更不用说它会在用户释放密钥时触发自动完成功能,因此您不会触发 1000x ,因为有人无缘无故地按下“F”键。

在像这样的ajax / autocomplete情况下,我总是使用“keyup”。