Why can I preventDefault event on keydown but not on keyup with Javascript?

后端 未结 2 1169
独厮守ぢ
独厮守ぢ 2021-01-03 02:29

When using .keydown I can capture keydown event, then check and prevent default action (display the character).

When using .keyup I cannot?

相关标签:
2条回答
  • 2021-01-03 02:36

    In keyup event the character has been typed and can't be undone but in keydown nothing has been typed and the browser has intent to type the character, so you can cancel the browser intent.

    Whenever you type a character the following events occur:

    keydown --> keypress repeatedly until the key is released --> keyup

    • keydown -> can be prevented -> fired when press a key
    • keypress -> can be prevented -> fired when hold a key
    • keyup -> cannot be prevented -> fired when release a key
    0 讨论(0)
  • 2021-01-03 02:49

    the keydown() event is fired when the key is hit, meaning that code can be executed before the key is released.

    When the key is pressed code can prevent an action, because it simply hasn't happened yet, whereas on the keyup() event, it already has.

    e.g. a character has already been inserted into an input field when triggering keyup()

    in general, keydown and keyup produce the same keycodes (when used with a given event) however keypress gives you the physical key pressed (ASCII code returned rather than keyCode)

    0 讨论(0)
提交回复
热议问题