$("#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/