umlaute - javascript ã




Schlüsselcode und Charcode (4)

Die Eigenschaft event.which wird hinzugefügt, wenn jQuery verwendet wird, um Browserunterschiede zu vermeiden. Siehe Dokumentation .

Die Eigenschaft, die nicht definiert ist, wenn Sie jQuery nicht verwenden.

Warum schreiben Leute Statement wie

e.keyCode ? e.keyCode : e.charCode

Manche Leute benutzen auch e.which

Könnte jemand bitte erklären?


Es ist eine bedingte Aussage.

Wenn der Browser e.keyCode unterstützt, dann nehmen Sie e.keyCode else e.charCode.

Das ist vergleichbar mit

var code = event.keyCode || event.charCode

event.keyCode : Gibt den Unicode-Wert eines Nicht-Zeichen-Schlüssels in einem keypress-Ereignis oder eine beliebige andere Taste eines anderen Tastaturereignisses zurück.

event.charCode : Gibt den Unicode-Wert einer Zeichentaste zurück, die während eines Tastendruckereignisses gedrückt wurde.


Okay, hier sind die Erklärungen.

e.keyCode - wird verwendet, um die Nummer zu erhalten, die die Taste auf der Tastatur darstellt

e.charCode - eine Zahl, die das Unicode-Zeichen des Schlüssels auf der Tastatur darstellt

e.which - (jQuery-spezifisch) ist eine Eigenschaft, die in jQuery eingeführt wurde ( NICHT in normalem Javascript verwenden)

Unten ist das Code-Snippet, um den keyCode und charCode zu erhalten

<script>
// get key code
function getKey(event) {
  event = event || window.event;
  var keyCode = event.which || event.keyCode;
  alert(keyCode);
}

// get char code
function getChar(event) {
  event = event || window.event;
  var keyCode = event.which || event.keyCode;
  var typedChar = String.fromCharCode(keyCode);
  alert(typedChar);
}
</script>

Live-Beispiel zum Abrufen von keyCode und charCode in JavaScript .


Schlüsselereignisse konsistent zu behandeln ist gar nicht so einfach.

Erstens gibt es zwei verschiedene Arten von Codes: Tastaturcodes (eine Zahl, die die Taste auf der Tastatur darstellt, die der Benutzer gedrückt hat) und Zeichencodes (eine Zahl, die ein Unicode-Zeichen darstellt). Sie können im keypress Ereignis nur zuverlässig Zeichencodes erhalten. Versuchen Sie nicht, Zeichencodes für keyup und keydown Ereignisse zu erhalten.

Zweitens erhalten Sie in einem keydown Ereignis verschiedene Werte in einem keyup oder keydown Event.

Ich empfehle diese Seite als nützliche Ressource. Als Zusammenfassung:

Wenn Sie daran interessiert sind, einen Benutzer zu finden, der ein Zeichen eingibt, verwenden Sie das Ereignis keypress . IE speichert bizarr nur den Zeichencode in keyCode während alle anderen Browser es in which speichern. Einige (aber nicht alle) Browser speichern sie auch in charCode und / oder keyCode . Ein Beispiel für einen Keypress-Handler:

function(evt) {
  evt = evt || window.event;
  var charCode = evt.which || evt.keyCode;
  var charStr = String.fromCharCode(charCode);
  alert(charStr);
}

Wenn Sie einen nicht druckbaren Schlüssel (z. B. eine Cursortaste) erkennen keydown , verwenden Sie das keydown Ereignis. Hier ist keyCode immer die zu verwendende Eigenschaft. Beachten Sie, dass keyup Ereignisse dieselben Eigenschaften haben.

function(evt) {
  evt = evt || window.event;
  var keyCode = evt.keyCode;

  // Check for left arrow key
  if (keyCode == 37) {
    alert("Left arrow");
  }
}




jquery