繁体   English   中英

Javascript keyup / onkeyup错误的元素

[英]Javascript keyup / onkeyup wrong element

有人有同样的问题吗? 当快速键入文本框并跳到下一个文本框(通过按“tab”键)时,将从错误的元素注册keyup事件。

行为:

  1. 前提条件:我们有两个文本框; 用javascript注册到key-up事件
  2. 操作:在文本框中键入quicky并使用“tab”键切换到下一个文本框。
  3. 结束情况 :所有按下的字符都在第一个文本框中呈现,第二个文本框被选中(但为空); Javascript keyup事件从最后一个元素注册最后一个x(取决于类型速度)。(意外)

预期的最终情况:
- 所有按下的字符都在第一个文本框中呈现,第二个文本框被选中(但为空); Javascript:只从最后一个元素注册最后一个('tab'键盘事件)。

(这个问题在普通的javascript中,但也传播到jQuery onkeyup事件)

在浏览器中测试: - Chrome(版本49.0.2623.87 m(64位)) - FireFox(45.0.1) - Edge

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">

输出:见控制台;

实际上你在控制台中看到的是预期的结果,因为:当你按Tab键时它的句柄2事件首先是一个keyDown(这会将你移动到第二个textField),现在你在第二个textField中你仍然在keyDown事件下,因此,当您释放Tab键时,它会处理您的keyUp事件,而最后一个事件发生在第二个textField上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM