Если вас интересуют только те примеры ключей, которые вы упомянули, то событие keydown
подойдет, за исключением более старых, до Blink версий Opera (по крайней мере до версии 12), где вам нужно отменить событие keypress
. Надежно идентифицировать непечатаемые ключи в событии keydown
гораздо проще, чем в событии keypress
, поэтому нижеприведенная переменная используется в обработчике keydown
, чтобы сообщить обработчику keypress
, подавлять или нет поведение по умолчанию.
var cancelKeypress = false;
document.onkeydown = function(evt) {
evt = evt || window.event;
cancelKeypress = /^(13|32|37|38|39|40)$/.test("" + evt.keyCode);
if (cancelKeypress) {
return false;
}
};
/* For Opera */
document.onkeypress = function(evt) {
if (cancelKeypress) {
return false;
}
};