Захват "Удалить" нажатия клавиш с помощью jQuery - PullRequest
108 голосов
/ 12 июля 2009

При использовании примера кода из документации jQuery для обработчика событий нажатия клавиши я не могу перехватить клавишу Удалить . Приведенный ниже фрагмент будет регистрировать 0 при нажатии клавиши Удалить в FireFox:

$(document).keypress(function(e) {
    console.log(e.which);       
});

Кажется, должен быть способ получить ключ Delete , но это двусмысленный термин, поэтому Google не окажет особой помощи в этом.

Ответы [ 4 ]

189 голосов
/ 12 июля 2009

Вы не должны использовать событие keypress, но событие keyup или keydown, потому что событие keypress предназначено для реальных (печатаемых) символов. keydown обрабатывается на более низком уровне, поэтому он захватывает все непечатаемые клавиши, такие как delete и enter .

76 голосов
/ 27 июля 2012
$('html').keyup(function(e){
    if(e.keyCode == 46) {
        alert('Delete key released');
    }
});

Источник: javascript кодов символов коды клавиш с www.cambiaresearch.com

30 голосов
/ 01 ноября 2012

Javascript Keycodes

  • e.keyCode == 8 для Backspace
  • e.keyCode == 46 для перемотка вперед или удаление кнопки на ПК

Кроме этой детали, ответ Колина и Тода работает.

7 голосов
/ 03 декабря 2017

event.key === "Удалить"

Более новый и намного чище: используйте event.key. Нет больше произвольных числовых кодов!

document.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Delete") {
        // Do things
    }
});

Документы Mozilla

Поддерживаемые браузеры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...