Capture d'un événement de pression de touche (ou de touche enfoncée) sur l'élément DIV


146

Comment intercepter l'événement keypress ou key down sur un élément DIV (en utilisant jQuery)?

Que faut-il pour donner le focus à l'élément DIV?


2
Que signifie «focus» pour une div?
Jonathon Faust

1
jboyd autre que la tabulation quand il a un tabindex, vous pouvez utiliser javascript pour le trouver et appeler la méthode de focus dessus.
Brendan Enrick

2
@Lalchand ... pouvez-vous accepter ma réponse un moment? :)
helle

Réponses:


301

(1) Définissez l' tabindexattribut:

<div id="mydiv" tabindex="0" />

(2) Lier au keydown:

 $('#mydiv').on('keydown', function(event) {
    //console.log(event.keyCode);
    switch(event.keyCode){
       //....your actions for the keys .....
    }
 });

Pour définir le focus sur le démarrage:

$(function() {
   $('#mydiv').focus();
});

Pour supprimer - si vous ne l'aimez pas - la divbordure de focus, définissez-la outline: nonedans le CSS.

Consultez le tableau des codes clés pour plus de keyCodepossibilités.

Tout le code en supposant que vous utilisez jQuery.

#

43
+1 tabindex est le point clé ici pour rendre le div «sélectionnable». JQuery n'est pas nécessaire, la même chose fonctionne avec Angular ainsi que (je suppose) avec des événements javascript simples.
Jukka Dahlbom

4
Quelle est la prise en charge du navigateur pour cela?
knownasilya

27
tabindex est un élément clé, mais ne le définissez pas sur une valeur autre que "0". Faire quelque chose au-dessus de 0 va gâcher les lecteurs d'écran pour les utilisateurs malvoyants (cela sautera tout sur la page et ira directement à n'importe quel tabindex au-dessus de 0). tabindex = "0" le rend "tabable". vous pouvez avoir des éléments infinis avec tabindex = "0"
zonabi

2
Fonctionne également avec <pre>!
dfmiller

2
Excellent! Il me manquait l'attribut tabindex, peut-être parce que les DIV ne peuvent pas recevoir le focus à moins qu'ils n'aient un tabindex. Merci mec! Sauvé ma vie! EDIT: fonctionne également avec React
Vinícius Negrão

6

Voici un exemple sur JS simple:

document.querySelector('#myDiv').addEventListener('keyup', function (e) {
  console.log(e.key)
})
#myDiv {
  outline: none;
}
<div 
  id="myDiv"
  tabindex="0"
>
  Press me and start typing
</div>


Comment cela répond-il à la question?
Poul Bak

5

L' attribut HTML tabindex indique si son élément peut être focalisé, et si / où il participe à la navigation séquentielle au clavier (généralement avec la Tabtouche). Lisez MDN Web Docs pour une référence complète.

Utilisation de Jquery

Utilisation de JavaScript


1
En fait, j'ai trouvé cela à la recherche d'un problème avec l'événement de mise au point qui se déclenchait lorsque les contrôles de la div perdaient le focus disent de cliquer sur la barre de défilement divs, ajouter simplement l'arrêt de tabulation à la div était le correctif, alors merci beaucoup
MikeT
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.