When using .keydown
I can capture keydown event, then check and prevent default action (display the character).
When using .keyup
I cannot?
I know the event is being captured as alert()
fires when the code is inside the condition yet the preventDefault()
doesn't prevent the action.
Here is a full DEMO
When using .keydown
I can capture keydown event, then check and prevent default action (display the character).
When using .keyup
I cannot?
I know the event is being captured as alert()
fires when the code is inside the condition yet the preventDefault()
doesn't prevent the action.
Here is a full DEMO
Share Improve this question asked Oct 30, 2013 at 17:11 AaronAaron 3,2557 gold badges32 silver badges49 bronze badges 7 | Show 2 more comments2 Answers
Reset to default 15In 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 key
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)
keyup
's action isn't to add a character to a field. That's already been and gone. – ahren Commented Oct 30, 2013 at 17:12keypress
– fred02138 Commented Oct 30, 2013 at 17:14