131 votes

Capturer la pression de la touche "Supprimer" avec jQuery

Lorsque j'utilise le code d'exemple de la documentation de jQuery pour le gestionnaire d'événements keypress, je ne parviens pas à capturer l'événement Delete clé. L'extrait ci-dessous va enregistrer 0 lorsque le Delete est pressée dans FireFox :

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

Il semble qu'il doit y avoir un moyen de capturer la Delete mais comme il s'agit d'un terme ambigu, Google n'est pas d'un grand secours.

0 votes

Avec Jquery : $(document).keyup( function(e) { if(e.key == 'Backspace' || e.key == 'Delete') { ... } });

217voto

Philippe Leybaert Points 62715

Vous ne devriez pas utiliser le keypress mais l'événement keyup ou keydown parce que le keypress est destiné aux caractères réels (imprimables). keydown est géré à un niveau inférieur, de sorte qu'il capturera toutes les clés non imprimées comme delete y enter .

0 votes

keyup serait de mieux faire le travail.

2 votes

@atilkan non, l'utilisateur attend un feedback sur keydown pas keyup . Tous les éditeurs de texte effectuent des actions lorsqu'une touche est enfoncée, et non lorsqu'elle est relâchée.

2 votes

@PhilippeLeybaert Dans mon cas, le programme ne peut pas attraper le dernier caractère pressé.

87voto

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

Source : javascript char codes key codes de www.cambiaresearch.com

18 votes

Il devrait être alert('Delete Key Released') .

0 votes

Si quelqu'un utilise keypress au lieu de keyup comme suggéré par Tod alors vous obtiendrez keycode == 46 événement contre . key (point). mais cela fonctionne bien avec keyUp. Merci

2 votes

Comme indiqué dans une autre réponse, le .keyCode est déprécié.

39voto

Onur Yılmaz Points 391

Codes clés Javascript

  • e.keyCode \== 8 pour backspace
  • e.keyCode \== 46 pour forward backspace ou delete dans l'écran du PC

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

4 votes

Il devrait être e.keyCode et pas e.KeyCode

27voto

Gibolt Points 4072

Event.key === "Delete" (supprimer)

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

REMARQUE : Les anciennes propriétés ( .keyCode y .which ) sont dépréciés.

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

Docs Mozilla

Navigateurs pris en charge

2voto

danhdds Points 111

Vous pouvez suivre la touche de suppression/retour arrière avec jQuery comme suit :

 $(document).keyup(function(e){
   if(e.key === "Backspace") {
    alert('Delete key/ backspace');
   }
 });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X