События keydown
и keypress
называются ДО того, как браузер обработает ввод.Во время этих событий разработчик может добавить метод, запрещающий пользователю ввод текста.
Поэтому, когда вы слушаете функцию keydown
, $(this).val()
НЕ возвращает «ожидаемое» значение.
Изображение (пользователь уже сфокусировался на поле ввода):
{ } <-- Empty input field
[X] <-- Use presses the X key
**KEYDOWN**
**KEYPRESS**
{X} <-- "x" appears in the text field
**KEYUP**
Чтобы получить «ожидаемое» значение ввода, необходимо использовать событие keyup
вместо keydown
.