webentwicklung-frage-antwort-db.com.de

tastendruckereignis wird in Chrome bei der EINGABETASTE nicht generiert?

Meine Anwendung erfordert eine Eingabe von Benutzern. Wenn Benutzer einen Wert in ein Textfeld eingeben, drücken sie die Eingabetaste. Dadurch wird ein Schaltflächen-On-Click-Ereignis aufgerufen. Dies funktioniert gut in IE, FF, aber nicht in Chrome. Bei der Eingabe in Chrome wird kein Tastendruckereignis generiert. Hier ist mein Code-Snippet

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

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

Könnte jemand einen Beitrag dazu leisten?

16
emilly

Cross-Browser-Methode:

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

Getestet auf Chrome 24: http://jsfiddle.net/PTauw/1/

24
sdespont

keypress ist das richtige Ereignis zum Erkennen, welches Zeichen eingegeben wurde (obwohl in diesem speziellen Fall das Erkennen der Eingabetaste keydown genauso gut funktionieren würde). Wie das Zeichen bei einem Tastendruckereignis eingegeben wird, ist jedoch zwischen Browsern inkonsistent. Daher normalisiert jQuery die which-Eigenschaft. Hier ist was du willst:

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

Die definitive Referenz für wichtige Ereignisse: http://unixpapa.com/js/key.html

6
Tim Down

Dieser Link könnte für Sie hilfreich sein ...
Taste "Api Jquery" Drücken Sie Oder versuchen Sie es mit diesem Code 

Tastendruck in Keydown ändern:

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

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

});
0
Vaibs_Cool