When using .keydown
I can capture keydown event, then check and prevent default action (display the character).
When using .keyup
I cannot?
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 keykeypress
-> can be prevented -> fired when hold a keykeyup
-> cannot be prevented -> fired when release a keythe 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)