web-dev-qa-db-fra.com

Capturer "Supprimer" Keypress avec jQuery

Lors de l'utilisation de l'exemple de code de la documentation jQuery pour le gestionnaire d'événements keypress, je suis incapable de capturer le fichier. Delete clé. L'extrait ci-dessous va vous connecter 0 quand le Delete la touche est enfoncée dans FireFox:

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

On dirait qu'il doit y avoir un moyen de capturer le Delete clé, mais c’est un terme ambigu, ce qui fait que Google ne nous aide pas beaucoup.

108
Shane H

Vous ne devez pas utiliser l'événement keypress, mais l'événement keyup ou keydown, car l'événement keypress est destiné aux caractères réels (imprimables). keydown est géré à un niveau inférieur afin de capturer toutes les clés non imprimables comme delete et enter.

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

Source: codes de clé javascript char sur www.cambiaresearch.com

76
Tod Palin

Codes clavier Javascript

  • e.keyCode == 8 pour backspace
  • e.keyCode == 46 pour forward backspace ou delete bouton dans PC

Sauf ce détail, la réponse de Colin & Tod fonctionne.

30
csonuryilmaz

event.key === "Supprimer"

Plus récent et beaucoup plus propre: utilisez event.key. Plus de codes numériques arbitraires!

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

Mozilla Docs

Navigateurs pris en charge

7
Gibolt