如果我输入'St',那么当我按下t时,如果我在textfield.value
/ onkeypress
函数中输出onkeydown
的输入,我只会得到'S' 。
这是为什么?我如何摆脱这种滞后?
答案 0 :(得分:14)
使用keyup
事件代替keypress
。 keydown
会显示前键击值,keypress
(显然)也会显示。
答案 1 :(得分:11)
在keypress
事件中,仍然可以阻止键入的字符进行注册,因此输入的值可以更新,直到keypress
事件之后。您可以改为使用keyup
事件,或使用window.setTimeout()
设置延迟。
答案 2 :(得分:1)
因为在键盘事件发生之前没有注册击键。因此,您应该检测onkeyup
事件,而不是onkeypress
。