当使用键盘导航到自动完成选项并按 [enter] 时,其他浏览器(例如:Firefox 14.0.1)会触发此事件,但 Chrome (21.0.1180.60 m) 不会。我正在使用 jquery 来 Hook 事件:
$('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)。
最佳答案
在这样的情况下执行 keyup 并没有什么问题,特别是因为它解决了问题。问题是数据列表填充文本框的速度不够快,无法让 keydown 事件在输入上触发事件。此时您仍然专注于数据列表本身。这是 keyup 的优点之一的典型示例。
更不用说,一旦用户释放按键,它就会触发自动完成,因此您不会因为有人无缘无故地按住“F”键而触发1000x。
在像这样的 ajax/自动完成情况下,我总是使用“keyup”。
关于jquery - Chrome 自动完成文本输入可防止触发 keydown 事件(jquery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796932/