Выбранный ответ на этот вопрос не полный. Он не обрабатывает случай, когда нажимается символьная клавиша в сочетании с клавишей-модификатором (например, CTRL - A ).
Попробуйте, например, набрать CTRL - A , используя firefox со следующим кодом. Текущий ответ будет рассматривать его как символ:
HTML:
<input placeholder="Try typing CTRL-A in Firefox" style="width: 200px"/>
JavaScript:
$("input").keypress(function (e) {
if (e.which !== 0) {
alert(String.fromCharCode(e.which));
}
});
http://jsfiddle.net/4jx7v/
Примечание. При использовании некоторых браузеров (таких как Chrome) предупреждение не будет запускаться, поскольку они не запускают событие нажатия клавиш для несимвольных вводов.
Лучшее решение может быть:
HTML:
<input placeholder="Try typing CTRL-A in Firefox" style="width: 200px"/>
JavaScript:
$("input").keypress(function (e) {
if (e.which !== 0 &&
!e.ctrlKey && !e.metaKey && !e.altKey
) {
alert(String.fromCharCode(e.which));
}
});
http://jsfiddle.net/hY5f4/
В этом случае предупреждение срабатывает только при нажатии A , а не CTRL - A для всех браузеров.