jQuery .keypress & .keydown .was

Lesezeit: 3 Minuten

Ok, was ist der Unterschied zwischen .keypress und .keydown/.keyup? Derzeit verwende ich .keydown, das einen .what-Wert von 38 für meine Taste zurückgibt. Wenn ich es jetzt in .keypress ändere, gibt es einen Wert von 109 für dieselbe Taste zurück. Was ist der Unterschied und warum unterscheiden sich die Werte für denselben Schlüssel?

  • Unterschiedliche Browser sollten zu unterschiedlichen Ereignissen führen, jedoch nicht zu unterschiedlichen Tastaturbefehlen

    – SpYk3HH

    17. April 2012 um 12:56 Uhr

  • Ich habe ein json-Objekt mit jedem Tastenereignis und jedes nach Browser geteilt, ich werde es auch ganz schnell mit allen drei Tastendrücken posten und wir können das testen, Gimmie wie 10 Minuten

    – SpYk3HH

    17. April 2012 um 12:57 Uhr

Benutzer-Avatar
RvdK

Wenn Sie eine Taste drücken, wird a ausgelöst keydown und das Auslösen feuert a keyup. Das keypress liegt normalerweise zwischen diesen beiden.

keydown und keyup darüber reden Schlüssel wurde geändert. keypress erzählt welche Charakter dieser Schlüssel repräsentiert.

Beachten Sie, dass dies alles browserabhängig ist!

Sehen Dieser Artikel über die Unterschiede zwischen den Schlüsselereignissen, wie sie in verschiedenen Browsern implementiert sind.

Benutzer-Avatar
SpYk3HH

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

Sehen Sie meine Geige und versuchen Sie etwas wie den Buchstaben “r”

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

Irgendwie habe ich darauf nie geachtet

Weitere Infos gefunden:

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

“Die beiden Eigenschaften sind keyCode und charCode. (zu) einfach gesagt, keyCode sagt etwas über die tatsächliche Tastaturtaste aus, die der Benutzer gedrückt hat, während charCode gibt den ASCII-Wert des resultierenden Zeichens an. Diese Informationsbits müssen nicht gleich sein; zum Beispiel haben ein Kleinbuchstabe „a“ und ein Großbuchstabe „A“ dasselbe keyCodeweil der Benutzer dieselbe Taste drückt, aber eine andere charCode weil der resultierende Charakter anders ist.

Entdecker und Oper unterlassen Sie Unterstützung charCode. Sie geben jedoch die Zeicheninformationen ein keyCodeaber nur mit onkeypress. onkeydown und -up keyCode enthält wichtige Informationen.”

  • Ja, deshalb bin ich verwirrt, warum?

    – ChrisMJ

    17. April 2012 um 14:26 Uhr

  • wie auch jbl in seiner Antwort darauf hingewiesen hat, diese Seite beschreibt das Problem nur ein wenig, aber es scheint die Frage immer noch nicht vollständig zu beantworten. Vielleicht habe ich die Seite falsch gelesen, aber an einer Stelle weist sie immer noch darauf hin, dass der Charcode auf beide gezogen wird, einfach gibt man einen anderen Wert zurück. Vielleicht findet ein Blick in ein altes js-Dokument die Antwort. Ich schaue jetzt, werde mein Objekt auch umschreiben, um die Tastendruckunterschiede einzubeziehen

    – SpYk3HH

    17. April 2012 um 15:06 Uhr

  • obwohl ich vorschlagen würde, Tastendruck zu vermeiden, da er nicht so vorhersehbare Ereignisse wie Keydown und Keyup auslöst

    – SpYk3HH

    17. April 2012 um 15:08 Uhr

Benutzer-Avatar
jbl

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

Keydown löst bei jedem Tastendruck aus und gibt Scan-Code. Tastendruck löst nach Tastendruck aus und gibt Zeichencode aus, ist aber nur für Zeichentasten garantiert.

Gehen Sie im Normalfall für keyup:

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

Gründe dafür:

  1. keydown feuert weiter, wenn der Benutzer die Tasten gedrückt hält, während keypress und keyup Feuer nur einmal.
  2. keypress erkennt keine Sondertasten (zB SHIFT), keydown und keyup tun.

KeyPress passiert nach KeyDown. Sie können also KeyDown verwenden, um festzustellen, um welche Taste es sich handelt, und dann KeyPress, um dieses Zeichen zu verbieten.

1226570cookie-checkjQuery .keypress & .keydown .was

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy