jQuery – keydown() auf div funktioniert nicht in Firefox
Lesezeit: 3 Minuten
Wayne Koorts
Ich habe den folgenden Beispielcode, der eine Warnung anzeigen sollte, wenn das div im Fokus ist und eine Taste gedrückt wird. Dies tut, was ich in IE 7 erwarte, aber nicht in Firefox 3.5.5. Was mache ich falsch?
BEARBEITEN: Ich habe gerade versucht zu ersetzen keydown mit keypress und keyup und die funktionieren auch nicht. Übrigens habe ich auch dafür gesorgt, dass meine Einstellung “Während der Eingabe suchen” für alle Fälle deaktiviert ist.
Haben Sie versucht, stattdessen Tastendruck oder Tastendruck zu verwenden?
– Mattball
11. November 2009 um 20:44 Uhr
@Matt: Habe das gerade versucht und die Frage aktualisiert, danke.
– Wayne Koorts
11. November 2009 um 20:52 Uhr
<body> schießt auch nicht keydown Ereignis und es hat mir viel Kopfzerbrechen bereitet…
– Derek 朕會功夫
19. September 2011 um 0:08 Uhr
Sie müssen dem div einen Tabindex geben, damit es den Fokus erhalten kann.
<div id="testdiv" tabindex="0"></div>
Fantastisch! Vielen Dank!
– Wayne Koorts
11. November 2009 um 21:06 Uhr
Einfach ein tabindex hat meinen Tag gerettet.
– Derek 朕會功夫
19. September 2011 um 0:08 Uhr
Ausgezeichnete Antwort .. Ich habe mehrere Stunden damit verbracht, das zu beheben, bis ich diese Antwort gefunden habe … Daumen hoch ..
– Benutzer1862764
15. Dezember 2013 um 11:16 Uhr
@RichardGarside omg, vielen Dank, ich habe ein paar Stunden gekämpft, bis ich Ihre Antwort gefunden habe. Wenn du in Tokio sein wirst – lass mich wissen, kaufst du einen Bären 😉
– Weißsiroi
21. Februar 2019 um 8:40 Uhr
@RichardGarside Hallo Kumpel, ich bin jetzt in Istanbul, also wenn du hier bist – lass mich wissen, Bier wartet auf dich :))
– Weißsiroi
4. August 2020 um 16:40 Uhr
Ich habe das oben Gesagte in Firefox so zum Laufen gebracht:
Sobald das DIV den Fokus explizit darauf gesetzt hat, werden Schlüsselereignisse in Firefox 4.0.1 problemlos ausgelöst
Ich gehe nicht davon aus, dass dies funktionieren wird, da ein div nicht etwas ist, das solche Schlüsselereignisse empfangen sollte. Wenn Sie ein innerhalb dieses div platziert haben und der Benutzer eine Taste in der Eingabe selbst gedrückt hat, springt das Ereignis zum div und führt Ihre Funktion aus. Ich bin mir nicht 100 % sicher, was Ihr Projekt tut, also weiß ich nicht, wie ich Ihnen weitere Ratschläge geben soll, aber obwohl ich es nicht sein sollte, bin ich irgendwie überrascht, dass IE ein Keydown-Ereignis abfeuert ein Div.
Ich konnte keine dieser Antworten in Firefox 5 mit dem neuesten CDN von jquery zum Laufen bringen. Ich musste wissen, ob eines der Kinder des Div Schlüsselereignisse hatte, also griff ich auf Folgendes zurück:
$(document).keypress(function(e){
if(!$(e.target).parents().is("#testdiv")) return;
/* do child-of-div specific code here */
}
Wenn das Ziel das aktuelle div ist (und es den Fokus hat), könnte ich mir vorstellen, dass Sie so etwas tun könnten:
$(document).keypress(function(e){
if(!$(e.target).is("#testdiv")) return;
/* do div specific code here */
}
Haben Sie versucht, stattdessen Tastendruck oder Tastendruck zu verwenden?
– Mattball
11. November 2009 um 20:44 Uhr
@Matt: Habe das gerade versucht und die Frage aktualisiert, danke.
– Wayne Koorts
11. November 2009 um 20:52 Uhr
<body>
schießt auch nichtkeydown
Ereignis und es hat mir viel Kopfzerbrechen bereitet…– Derek 朕會功夫
19. September 2011 um 0:08 Uhr