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

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