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
Antwort
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.
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.
Wenn Sie eine Taste drücken, feuert es eine keydown
und die Freigabe löst eine keyup
. Die keypress
kommt normalerweise zwischen diesen beiden.
keydown
und keyup
Vortrag über die Schlüssel wurde geändert. keypress
erzählt, welche Zeichen diesen Schlüssel darstellt.
Beachten Sie, dass dies alles Browser-abhängig ist!
Siehe this article about the differences between the key events as implemented on various browsers.
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
bezahltGefunden weitere Informationen:
http://www.quirksmode.org/js/keys.html
"Die zwei Eigenschaften sind
keyCode
undcharCode
. Put (zu) einfach,keyCode
sagt etwas über die tatsächliche Tastaturtaste, die der Benutzer drückte, währendcharCode
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 gleichekeyCode
, weil der Benutzer die gleiche Taste, aber eine anderecharCode
drückt, weil das resultierende Zeichen anders ist.Explorer und Opera nicht Unterstützung
charCode
. Sie geben jedoch die Zeicheninformation inkeyCode
, aber nur mitonkeypress
.onkeydown
und-up
keyCode
enthält wichtige Informationen."
Ja, deshalb bin ich verwirrt, warum? – ChrisMJ
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
einzuschließen, obwohl ich vorschlagen würde, Tastendruck zu vermeiden, da es nicht als vorhersehbare Ereignisse wie Keydown und keyup feuert – SpYk3HH
Im Normalfall gehen für keyup
:
$(document).keyup(function(e){
console.log(e.which);
});
Gründe:
keydown
Brennen hält, wenn der Benutzer die Tasten gedrückt hält, währendkeypress
undkeyup
Feuer nur einmal .
keypress
erkennt keine Sondertasten (z. B.SHIFT
),keydown
undkeyup
tun.
welchen Browser verwenden Sie? – Mathletics
Unterschiedliche Browser sollten zu verschiedenen Ereignissen führen, die aber keine anderen Tastenbefehle sind. – SpYk3HH
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