Przechwytywanie klawiatury "Delete" za pomocą jQuery

Używając przykładowego kodu z dokumentacji jQuery dla obsługi zdarzenia keypress, nie jestem w stanie uchwycić klucza Delete. Po naciśnięciu klawisza Delete w Firefoksie zostanie wyświetlony poniższy fragment:

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

Wydaje się, że musi być jakiś sposób, aby uchwycić Usuń klucz, ale jest to niejednoznaczne określenie, więc Google nie okazuje się zbyt pomocne w tym.

Author: H. Pauwelyn, 2009-07-12

4 answers

Nie należy używać zdarzenia keypress, ale zdarzenia keyup lub keydown, ponieważ zdarzenie keypress jest przeznaczone dla prawdziwych (drukujących) znaków. keydown jest obsługiwany na niższym poziomie, więc przechwyci wszystkie nieprintujące klucze, takie jak delete i enter .

 180
Author: Philippe Leybaert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-04 14:06:45
$('html').keyup(function(e){
    if(e.keyCode == 46) {
        alert('Delete key released');
    }
});

Źródło: kody znaków javascript kody klawiszy z www.cambiaresearch.com

 74
Author: Tod Palin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-12 01:41:13

Javascript Keycodes

  • e. keyCode = = 8 dla backspace
  • e. keyCode = = 46 for forward backspace or delete button in PC ' s

tylko że ten szczegół działa.

 27
Author: csonuryilmaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-30 05:16:00

Event.klucz = = = "Delete"

Nowsze i znacznie czystsze: użyj event.key. Koniec z dowolnymi kodami liczbowymi!

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

Mozilla Docs

Obsługiwane Przeglądarki

 4
Author: Gibolt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-03 01:36:35