Это происходит потому, что вы используете элемент keyCode
, например, строчные буквы 'a' и прописные буквы 'A' имеют одинаковый код ключа, потому что это один и тот же ключ, но другой символ charCode, потому что в результате символ другой.
Чтобы получить charCode, вы должны использовать событие keypress
и получить член event.charCode
, если он доступен, в противном случае вы получите event.keyCode
, который для IE, в событии нажатия клавиши содержит правильную информацию.
Посмотрите на следующий пример :
document.onkeypress = function (e) {
e = e || window.event;
var charCode = e.charCode || e.keyCode,
character = String.fromCharCode(charCode);
alert(character);
};