Javascript,按键值总是最新的一个字符?

Tom*_*Tom 12 javascript keypress keydown keyboard-events

如果键入"圣",由时间我按下吨,如果我输出的输入textfield.valueonkeypress/ onkeydown功能,我只得到"S".

为什么是这样?我如何摆脱这种滞后?

lin*_*lnk 16

使用keyup事件代替keypress.keydown将显示前键击值keypress(显然).

  • *keyup*仅在释放按键时触发,不会因重复按键而触发.因此,如果您按住键以输入多个相同的字符,则在释放键之前,键盘不会触发. (3认同)
  • 奇怪@Tom建议已经尝试过"onkeyup"? (2认同)

Tim*_*own 11

keypress事件中,仍然可以防止键入的字符进行注册,因此输入的值可以在keypress事件发生之后更新.您可以keyup改为使用该事件,或使用它window.setTimeout()来设置延迟.

  • @Tim:不,但它会详细说明定时器的工作方式(特别是排队).有意义的是,具有0ms的计时器将立即添加到回调队列中.具体来说,从回顾部分,*"如果计时器被阻止立即执行,它将被延迟到下一个可能的执行点"*.由于单线程特性,0ms定时器的下一个可能的执行点是线程何时变为空闲. (2认同)