javascript - 为什么我在快速打字时会出现错误的、双倍的输入值?

标签 javascript jquery event-handling dom-events return-value

$("#input").keyup(function(){
 console.log($(this).val());
})

当缓慢输入“a”和“b”时,上述代码将在控制台日志中生成“a”、“b”。但问题是当有人做得很快时。结果是“ab”,“ab”。使用键盘上靠近的字母(例如,)更容易重复这种情况。 “e”和“r”。 如何避免?

事件 keydown 和 keypress 不会遇到快速打字员的这个问题,但它们也很早。结果:输入的返回值不包含最后输入的字母。或者也许有办法以某种方式获得最后一封信?

最佳答案

嗯,问题并不是真正的快速打字,而是实际上当按键事件发生时。考虑一下:

  • a 被按下
  • b 被按下
  • a 已发布
  • b 已发布

无论完成得有多慢,在释放第一个键之前您都不会收到按键事件。显然没有办法解决这个问题,你不能在释放按键之前引发按键事件。

如果你只想要按键事件中按下的键,你可以从事件对象中获取它。示例:

$('#input').keypress(function(e){
  console.log(e.which);
});

关于javascript - 为什么我在快速打字时会出现错误的、双倍的输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145606/

相关文章:

javascript - 检测点击事件以防止自动完成列表关闭 jQuery

c# - 事件触发的次数越来越多

javascript - 为什么我无法让每个 tr 标记的事件发挥作用?

c# - 连接事件处理器

javascript - 使用拼接进行数组操作

javascript - Uncaught TypeError : rand. 切片不是函数

javascript - Immutable.js 中的延迟连接?

javascript - 使用2个栈实现队列

javascript - 点击切换 Google 组织结构图可视化?

jquery - TinyMCE Extended_valid_elements 似乎没有做到这一点