当使用键盘导航到自动完成选项并按[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)是首选。
答案 0 :(得分:3)
在这样的实例中执行keyup没有错,特别是因为它修复了问题。问题是数据列表没有足够快地填充文本框,以便keydown事件触发输入上的事件。那时你仍然专注于数据主义者本身。这是keyup的一个好处的一个主要例子。
更不用说它会在用户释放密钥时触发自动完成功能,因此您不会触发 1000x ,因为有人无缘无故地按下“F”键。
在像这样的ajax / autocomplete情况下,我总是使用“keyup”。