jQuery – keydown() auf div funktioniert nicht in Firefox

Lesezeit: 3 Minuten

Benutzer-Avatar
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?

<html>
<head>
    <title>JS test</title>
    <script type="text/javascript" src="https://stackoverflow.com/questions/1717897/jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#testdiv").keydown(function(event) {
                alert("Pressed " + event.keyCode);
            });
        });
    </script>    
    <style type="text/css">
        #testdiv
        {
            width: 50;
            height: 50;
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="testdiv"></div>
</body>
</html>

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:

$('#domainTableDiv').keydown(function(e) {
        alert(e.type + " button(" + e.which + ") ctrl(" + e.metaKey + ") alt(" + e.altKey + ") shift(" + e.shiftKey + ")" );
    });

$('#domainTableDiv').focus();

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.

Benutzer-Avatar
Avinash

Wir können auch so etwas verwenden:

$('#tbl tbody').attr("tabindex", 1).focus();
$('#tbl tbody').keydown(function (event) {
    ...
});

Benutzer-Avatar
Prem Kumar Maurya

Hier können Sie online nachsehen

Quellcode

<html>
<head>
    <title>JS test</title>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#testdiv").keydown(function(event) {
                alert("Pressed " + event.keyCode);
            });
        });
    </script>    
    <style type="text/css">
        #testdiv
        {
            width: 50px;
            height: 50px;
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="testdiv" tabindex="0"></div>
</body>
</html>

Benutzer-Avatar
Shanimal

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 */
}

Benutzer-Avatar
Echilon

Das liegt an der jQuery-Version. Versuchen http://code.jquery.com/jquery-latest.js als Quelle

1252090cookie-checkjQuery – keydown() auf div funktioniert nicht in Firefox

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

Privacy policy