Javascript,按键值总是落后最新的一个字符?
如果我输入 'St',当我按下 t 时,如果我在 onkeypress
/onkeydown
中输出 textfield.value
的输入函数,我只得到“S”。
这是为什么呢?我如何摆脱这种滞后?
If I type 'St', by the time I press the t, if I output the input of textfield.value
in the onkeypress
/onkeydown
functions, I only get 'S'.
Why is this? How do I get rid of this lag?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
keyup
事件而不是keypress
。keydown
将显示击键前的值,keypress
也会显示(显然)。use the
keyup
event instead ofkeypress
.keydown
will show the before-keystroke value, as willkeypress
(apparently).在
keypress
事件中,仍然可以阻止输入的字符注册,因此在keypress
事件之后才能更新输入的值。您可以改用keyup
事件,或使用window.setTimeout()
设置延迟。Within the
keypress
event, it's still possible to prevent the typed character from registering, so the input's value canot be updated until after thekeypress
event. You can use thekeyup
event instead, or usewindow.setTimeout()
to set up a delay.因为直到 keyup 事件发生时才注册击键。因此,您应该检测
onkeyup
事件而不是onkeypress
。Because the keystroke is not registered until keyup event occurs. So you should detect
onkeyup
event instead ofonkeypress
.