2012-04-17 17 views
31

Ok, was ist der Unterschied in .keypress und .keydown/.keyup? Gegenwärtig verwende ich .keydown, das einen .which Wert von 38 für meinen Schlüssel zurückgibt, jetzt, wenn ich es in .keypress ändere, gibt es einen Wert von 109 für den gleichen Schlüssel zurück. Was ist der Unterschied und warum unterscheiden sich die Werte für denselben Schlüssel?jQuery .keypress & .keydown .which

+0

welchen Browser verwenden Sie? – Mathletics

+0

Unterschiedliche Browser sollten zu verschiedenen Ereignissen führen, die aber keine anderen Tastenbefehle sind. – SpYk3HH

+0

Ich habe ein Json-Objekt mit jedem Schlüsselereignis und jedes geteilt durch einen Browser, ich werde es mit allen drei Tastendrücken zu einer Geige wirklich schnell posten und das können wir testen , Gimmie wie 10 Minuten – SpYk3HH

Antwort

2

KeyPress passiert nach KeyDown. Sie können KeyDown verwenden, um zu bestimmen, um welchen Schlüssel es sich handelt, und KeyPress, um dieses Zeichen zu sperren.

14

Sie sollen den folgenden Beitrag lesen: http://javascript.info/tutorial/keyboard-events

Keydown auf jedem Tastendruck lösen und Scan-Code gibt. Keypress löst nach dem Keydown aus und gibt Char-Code, aber es ist nur für die Zeichentasten garantiert.

21

Ich werde d $%^@ d, es gibt wirklich einen Unterschied mit Tastendruck und die ganze Zeit habe ich nie realisiert. lol

meine Geige sehen und versuchen, so etwas wie die Buchstaben "r"

http://jsfiddle.net/SpYk3/NePCm/

Irgendwie habe ich nie die Aufmerksamkeit auf diese

bezahlt

Gefunden weitere Informationen:

http://www.quirksmode.org/js/keys.html

"Die zwei Eigenschaften sind keyCode und charCode. Put (zu) einfach, keyCode sagt etwas über die tatsächliche Tastaturtaste, die der Benutzer drückte, während charCode den ASCII-Wert des resultierenden Zeichens gibt. Diese Informationsbits müssen nicht gleich sein; zum Beispiel, ein Kleinbuchstabe 'a' und ein Großbuchstabe 'A' haben die gleiche keyCode, weil der Benutzer die gleiche Taste, aber eine andere charCode drückt, weil das resultierende Zeichen anders ist.

Explorer und Opera nicht Unterstützung charCode. Sie geben jedoch die Zeicheninformation in keyCode, aber nur mit onkeypress. onkeydown und -upkeyCode enthält wichtige Informationen."

+0

Ja, deshalb bin ich verwirrt, warum? – ChrisMJ

+0

gut wie jbl in seiner Antwort darauf hingewiesen, [diese Seite] (http://javascript.info/tutorial/keyboard-events) beschreibt das Problem nur ein wenig, aber es scheint immer noch nicht die Frage im Ganzen zu beantworten . Vielleicht lese ich die Seite falsch, aber an einem Punkt zeigt es immer noch den Zeichencode an, als ob er an beiden gezogen wird, einfach wiederholt man einen anderen Wert. Vielleicht wird ein Blick in ein altes js doc die Antwort finden. Ich schaue jetzt, werde auch mein Objekt umschreiben, um die Tastendruck Unterschiede – SpYk3HH

+0

einzuschließen, obwohl ich vorschlagen würde, Tastendruck zu vermeiden, da es nicht als vorhersehbare Ereignisse wie Keydown und keyup feuert – SpYk3HH

5

Im Normalfall gehen für keyup:

$(document).keyup(function(e){ 
    console.log(e.which); 
}); 

Gründe:

  1. keydown Brennen hält, wenn der Benutzer die Tasten gedrückt hält, während keypress und keyup Feuer nur einmal
  2. .
  3. keypress erkennt keine Sondertasten (z. B. SHIFT), keydown und keyup tun.
Verwandte Themen