События keydown
и keyup
запускаются для каждого нажатия клавиши (например, для клавиши shift
).Они сообщают о ключе («ключ» не имеет ни строчных, ни прописных букв).keypress
сообщает об одном событии для комбинированных штрихов (например, SHIFT плюс A) и кода ASCII (с правильным представлением верхнего / нижнего регистра).
Решение состоит в том, чтобы прослушать событие keypress
.Если вы поддерживаете более старые браузеры, вам следует использовать этот код (в соответствии с этим веб-сайтом ):
String.fromCharCode(evt.charCode || evt.keyCode);
Подробнее в этот вопрос о стекопотоке .