2010-12-10 17 views
0

Warum funktioniert event.which in IE nicht?Warum funktioniert event.which im IE nicht?

Das ist mein Code, der in FireFox und Chrome funktioniert gut, aber nicht im Internet Explorer.

#inputFeild ist eine Textarea.

+0

By the way, ist es Feld nicht Feild. – BoltClock

+0

Wie funktioniert dieser Code nicht? Es wird den Zeichencode für druckbare Tasten in allen Browsern anzeigen und bei nicht druckbaren Tasten (wie Pfeil und Funktionstasten) ein wenig variieren. –

Antwort

3

Die keypress Veranstaltung insbesondere für die keycode unzuverlässig ist, das entsprechende Ereignis zu verwenden, für was auch immer Sie tun ... wenn Sie zum Beispiel den Wert benötigen, verwenden keyup statt:

$("#inputFeild").keyup(function(event){ 
    alert(event.which); 
}); 

Die .keypress() Dokumentation diese Unterschiede stellt fest, einige von:

Beachten Sie, dass keydown und keyup einen Code liefern, das anzeigt, welche Taste gedrückt wird, während keypress zeigt an, welches Zeichen war ente rot. Zum Beispiel wird ein Kleinbuchstabe "a" als 65 von keydown und keyup, aber als 97 von keypress gemeldet. Ein Großbuchstabe "A" wird von allen Ereignissen als 65 gemeldet. Aufgrund dieser Unterscheidung ist es beim Auffangen spezieller Tastenanschläge wie z. B. Pfeiltasten .keydown() oder .keyup() eine bessere Wahl.

+0

Diese Antwort entspricht nicht Ihren üblichen Standards. Was meinst du mit "Wert"? Die Unterscheidung, die vorgenommen werden muss, besteht zwischen Schlüsselcodes und Zeichencodes, und welche Ereignisse für welche zu verwenden sind. –

+0

@Tim - Ich dachte die Dokumentation geschrieben, dass sehr klar ... –

+0

Die Dokumentation ist in Ordnung, aber schwach. Es sollte energischer sein, KEYDOWN und keyup nicht für die Zeichenerkennung zu verwenden. * "Ein Kleinbuchstabe" a "wird mit" keydown "und" keyup "" als 65 gemeldet * * ist nicht allgemein zutreffend: Es hängt von der Tastatur des Benutzers ab. Diese Unterscheidung muss wirklich deutlich gemacht werden, da die Menschen offensichtlich verwirrt sind. –