Как я могу отменить keydown
из определенного ключа на клавиатуре, например (пространство, входят и arrows
) в странице HTML.
Если вас интересуют только упомянутые вами примеры ключей, подойдет событие keydown
, за исключением более старых версий Opera до Blink (по крайней мере, до версии 12 включительно), где вам необходимо отменить событие нажатие клавиши
. Намного легче надежно идентифицировать непечатаемые ключи в событии keydown
, чем в событии keypress
, поэтому ниже используется переменная, которая устанавливается в обработчике keydown
для сообщить обработчику нажатия клавиши
, следует ли подавлять поведение по умолчанию.
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;
}
};
Перехватить событие нажатия клавиши и вернуть false. Он должен быть в строках:
<script>
document.onkeydown = function(e){
var n = (window.Event) ? e.which : e.keyCode;
if(n==38 || n==40) return false;
}
</script>
( здесь )
Коды клавиш определены здесь
редактировать: обновить мой ответ, чтобы он работал в IE
Просто верните false. Помните, что в Opera это не работает. Вместо этого вы можете использовать onkeyup и проверить последний введенный символ и обработать его. Или лучше использовать JQuery KeyPress
jQuery имеет прекрасную функцию KeyPress , которая позволяет вам обнаруживать нажатие клавиши, тогда это должен быть просто случай определения ключевого значения и выполнения if для тех, которые вы хочу игнорировать.
редактировать: например:
$('#target').keypress(function(event) {
if (event.keyCode == '13') {
return false; // or event.preventDefault();
}
});