Wie finde ich mit jQuery heraus, welche Taste gedrückt wurde, als ich mich an das Tastendruckereignis band?
$('#searchbox input').bind('keypress', function(e) {});
Ich möchte eine Übermittlung auslösen, wenn ENTERgedrückt wird.
[Aktualisieren]
Obwohl ich die (oder besser: eine) Antwort selbst gefunden habe, scheint es Raum für Variationen zu geben;)
Gibt es einen Unterschied zwischen keyCode
und which
- besonders wenn ich nur suche ENTER, was niemals ein Unicode-Schlüssel sein wird?
Stellen einige Browser eine Eigenschaft bereit und andere die andere?
Antworten:
Eigentlich ist das besser:
quelle
e.which
Ihnen verwendete Ereignis verwenden müssen.e.which
wird nicht gesetzt (bleibt0
), sonderne.keyCode
ist (9
). Siehe stackoverflow.com/questions/4793233/… warum dies wichtig ist.Versuche dies
quelle
Wenn Sie die jQuery-Benutzeroberfläche verwenden, verfügen Sie über Übersetzungen für allgemeine Schlüsselcodes. In ui / ui / ui.core.js :
Es gibt auch einige Übersetzungen in tests / simulate / jquery.simulate.js, aber ich konnte keine in der JS-Kernbibliothek finden. Wohlgemerkt, ich habe nur die Quellen überprüft. Vielleicht gibt es einen anderen Weg, um diese magischen Zahlen loszuwerden.
Sie können auch String.charCodeAt und .fromCharCode verwenden:
quelle
Uncaught TypeError: String.charCodeAt is not a function
Ich denke, Sie wollten sagen'\r'.charCodeAt(0) == 13
Da Sie jQuery verwenden, sollten Sie unbedingt .which verwenden. Ja, verschiedene Browser legen unterschiedliche Eigenschaften fest, aber jQuery normalisiert sie und legt jeweils den .which-Wert fest. Siehe - Dokumentation über bei http://api.jquery.com/keydown/ heißt es:
quelle
... dieses Beispiel verhindert das Senden von Formularen (regelmäßig die grundlegende Absicht beim Erfassen von Tastenanschlag Nr. 13):
quelle
bearbeiten: Dies funktioniert nur für IE ...
Mir ist klar, dass dies ein alter Beitrag ist, aber jemand könnte dies nützlich finden.
Die Schlüsselereignisse werden zugeordnet. Anstatt den Schlüsselcodewert zu verwenden, können Sie auch den Schlüsselwert verwenden, um die Lesbarkeit zu verbessern.
Hier ist ein Spickzettel mit den zugeordneten Schlüsseln, die ich von diesem Blog erhalten habe
quelle
e.key
Eigentum.quelle
event.which
.Testen Sie das hervorragende Plugin jquery.hotkeys, das Tastenkombinationen unterstützt:
quelle
Hoffe das kann dir helfen !!!
quelle
Dies ist so ziemlich die vollständige Liste der Schlüsselcodes:
quelle
Okay, ich war blind:
enthält den ASCII-Code des Schlüssels.
Siehe https://developer.mozilla.org/En/DOM/Event.which
quelle
Hier finden Sie eine ausführliche Beschreibung des Verhaltens verschiedener Browser unter http://unixpapa.com/js/key.html
quelle
Ich werde nur den Lösungscode mit dieser Zeile ergänzen
e.preventDefault();
. Im Falle eines Eingabefeldes des Formulars kümmern wir uns nicht darum, bei Eingabe gedrückt zu sendenquelle
Fügen Sie verstecktes Senden hinzu, geben Sie nicht versteckt ein, sondern senden Sie es einfach mit style = "display: none". Hier ist ein Beispiel (unnötige Attribute aus dem Code entfernt).
Es akzeptiert nativ die Eingabetaste, benötigt kein JavaScript und funktioniert in jedem Browser.
quelle
Hier ist eine jquery-Erweiterung, die die gedrückte Eingabetaste behandelt.
Ein funktionierendes Beispiel finden Sie hier http://jsfiddle.net/EnjB3/8/
quelle
Hexe ;)
Demo: http://jsfiddle.net/molokoloco/hgXyq/24/
quelle
Verwenden Sie
event.key
und moderne JS!Keine Nummerncodes mehr. Sie können den Schlüssel direkt überprüfen. Zum Beispiel
"Enter"
,"LeftArrow"
,"r"
, oder"R"
.Mozilla Docs
Unterstützte Browser
quelle
Sie sollten einen Firbug haben, um ein Ergebnis in der Konsole zu sehen
quelle
Einige Browser verwenden keyCode, andere verwenden welchen. Wenn Sie jQuery verwenden, können Sie diese zuverlässig verwenden, da jQuery die Dinge standardisiert. Tatsächlich,
quelle
Nach Kilians Antwort:
Wenn nur die Eingabetaste wichtig ist, ist Folgendes wichtig:
quelle
Der einfachste Weg, den ich mache, ist:
quelle
event.which
statt zu verwendenevent.keyCode
. Von jQuery API :The event.which property normalizes event.keyCode and event.charCode. It is recommended to watch event.which for keyboard key input.
Ich habe gerade ein Plugin für jQuery erstellt, das einfachere
keypress
Ereignisse ermöglicht. Anstatt die Nummer finden und eingeben zu müssen, müssen Sie nur Folgendes tun:Wie man es benutzt
So einfach ist das. Bitte beachten Sie, dass
theKeyYouWantToFireAPressEventFor
ist nicht eine Zahl, aber eine Zeichenkette (zB"a"
Feuer , wenn Agedrückt wird,"ctrl"
um Feuer , wenn gedrückt wird, oder im Fall einer Zahl, gerade , ohne Anführungszeichen. Das würde ausgelöst , wennCTRL (control)1
1 gedrückt wird.)Das Beispiel / Code:
Code-Snippet anzeigen
Weil die lange Version so ... na ja ... lang ist, habe ich einen PasteBin-Link dafür erstellt:
http://pastebin.com/VUaDevz1
quelle
Die
event.keyCode
undevent.which
sind entzogen. Siehe @ Gibolt-Antwort oben oder überprüfen Sie die Dokumentation: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEventevent.key
sollte stattdessen verwendet werdenkeypress
Die Veranstaltung ist ebenfalls veraltet: https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_eventquelle
Versuche dies:
quelle