Захоплення клавіші "Видалити" клавішею jQuery


118

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

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

Здається, має бути спосіб захоплення Deleteключа, але це неоднозначний термін, тому Google не може допомогти в цьому.

Відповіді:


202

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


keyupбуло б краще виконати роботу.
localhoost

2
@atilkan ні, користувач очікує, що відгуки про це keydownне так keyup. Усі текстові редактори виконують дії, коли натискається клавіша, а не коли вона відпускається.
Філіп Leybaert

1
@PhilippeLeybaert У моєму випадку програма не може знайти останню натиснуту таблицю.
localhoost

82
$('html').keyup(function(e){
    if(e.keyCode == 46) {
        alert('Delete key released');
    }
});

Джерело: кодові ключові коди javascript від www.cambiaresearch.com


18
Це повинно бути alert('Delete Key Released').
Вальдхайнц

якщо хтось використовує натискання клавіш замість клавіатури, яку запропонував Тод, то ви отримаєте keycode == 46 подія проти. ключ (крапка). але він добре працює з keyUp. Спасибі
Мубашар

34

Ключі Javascript

  • e.keyCode == 8 дляbackspace
  • e.keyCode == 46 для forward backspaceабо deleteкнопки в ПК

За винятком цієї деталі, відповідь Коліна та Тода працює.


4
Це має бути e.keyCode, а не e.KeyCode
Джером

16

event.key === "Видалити"

Більш свіжі та набагато чистіші: використання event.key. Більше немає довільних кодів номерів!

ПРИМІТКА. Старі властивості ( .keyCodeі .which) застаріли.

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

Документи Mozilla

Підтримувані браузери

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.