web-dev-qa-db-fra.com

événement de frappe non généré dans Chrome sur la touche Entrée?

Mon application nécessite une entrée d'utilisateurs. Lors de la saisie d'une valeur dans une zone de texte, les utilisateurs appuient sur Entrée (touche de retour), ce qui appelle un événement onClick de boutons. Cela fonctionne très bien dans IE, FF mais pas Chrome. Sur entrer en chrome, l'événement de frappe n'est pas généré Voici mon extrait de code

 $('#myDiv').keypress(function (e) {
    alert("Key  pressed");
    if (e.keyCode == $.ui.keyCode.ENTER) {

     alert("enter pressed");
    }
  });

Quelqu'un pourrait-il apporter sa contribution à ce sujet?

16
emilly

Méthode multi-navigateurs:

$('#myDiv').keydown( function(e) {
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
    if(key == 13) {
        e.preventDefault();
        alert("enter pressed");
    }
});

Testé sur Chrome 24: http://jsfiddle.net/PTauw/1/

24
sdespont

keypress est l'événement correct pour détecter quel caractère a été saisi (bien que dans ce cas particulier, celui de détecter la touche Entrée, keydown fonctionnerait aussi bien). Cependant, la façon d'obtenir le caractère saisi dans un événement de frappe est incohérente entre les navigateurs. JQuery se normalise donc sur la propriété which. Voici ce que vous voulez:

$('#myDiv').keypress(function (e) {
    alert("Key pressed");
    if (e.which == $.ui.keyCode.ENTER) {
        alert("enter pressed");
    }
});

La référence définitive pour les événements clés: http://unixpapa.com/js/key.html

6
Tim Down

Ce lien pourrait vous être utile ...
Api Jquery Key Appuyez sur Ou essayez avec ce code 

Changez de pression sur keydown:

$('#myDiv').keydown(function(e) {

   // your logic
   alert("Key  pressed");
   if (e.keyCode == $.ui.keyCode.ENTER) {
       alert("enter pressed");
   }

});
0
Vaibs_Cool