Отмените keydown в HTML

Как я могу отменить keydown из определенного ключа на клавиатуре, например (пространство, входят и arrows) в странице HTML.

14
задан gsamaras 30 April 2015 в 15:14
поделиться

4 ответа

Если вас интересуют только упомянутые вами примеры ключей, подойдет событие 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;
    }
};
15
ответ дан 1 December 2019 в 12:51
поделиться

Перехватить событие нажатия клавиши и вернуть false. Он должен быть в строках:

<script>
document.onkeydown = function(e){
  var n = (window.Event) ? e.which : e.keyCode;
  if(n==38 || n==40) return false;
}
</script>

( здесь )

Коды клавиш определены здесь

редактировать: обновить мой ответ, чтобы он работал в IE

5
ответ дан 1 December 2019 в 12:51
поделиться

Просто верните false. Помните, что в Opera это не работает. Вместо этого вы можете использовать onkeyup и проверить последний введенный символ и обработать его. Или лучше использовать JQuery KeyPress

0
ответ дан 1 December 2019 в 12:51
поделиться

jQuery имеет прекрасную функцию KeyPress , которая позволяет вам обнаруживать нажатие клавиши, тогда это должен быть просто случай определения ключевого значения и выполнения if для тех, которые вы хочу игнорировать.

редактировать: например:

$('#target').keypress(function(event) {
  if (event.keyCode == '13') {
     return false; // or event.preventDefault();
  }
});
0
ответ дан 1 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: