是否有人遇到同样的问题? 当快速键入文本框并跳到下一个文本框时(通过按下'选项卡键),键盘事件将从错误的元素中注册。
行为:
预期结束情况:
- 所有按下的字符都在第一个文本框中呈现,第二个文本框被选中(但为空);
Javascript:只从最后一个元素注册了最后一个(' tab' keyup事件)。
(这个问题在普通的javascript中,但也传播到jQuery onkeyup事件)
在浏览器中测试: - Chrome(版本49.0.2623.87米(64位)) - FireFox(45.0.1) - 边缘
JSFiddle:https://jsfiddle.net/xk09542f/4/
JS:
document.getElementById('inp1').onkeyup = function(e) {
console.log(this.id + ' ' + e.which);
}
document.getElementById('inp2').onkeyup = function(e) {
console.log(this.id + ' ' + e.which);
}
HTML:
<input id="inp1" type="text">
<input id="inp2" type="text">
输出:见控制台;
答案 0 :(得分:1)
实际上,您在控制台中看到的是预期结果,因为: 当你按Tab键时它的句柄2事件首先是keyDown(它将移动你到第二个textField)现在你在第二个textField中你仍然在keyDown事件下,所以当你释放tab键时它处理你的keyUp事件和这个最后一个事件发生在第二个textField上。