Frage

Warum ist das nicht funktioniert?

var holdingctrl = false;
$(document).keydown("q",function(e) {
 if(holdingctrl == true) 
 alert("Holding CTRL and pressing Q: Success.");
 e.preventDefault();
});

$(document).keyup("q",function(e) {
 holdingctrl == false 
});

Dieses Beispiel unten funktioniert gut, aber was mache ich falsch oben?

$(document).keyup("q",function(e) {
 alert("ONLY pressing Q: Success.");
});
War es hilfreich?

Lösung

Sie benötigt einen Weg, um festzustellen, ob Steuerung zur Zeit gedrückt wurde (e.ctrlKey) - Dies sollte für Sie arbeiten:

  $(document).keyup(function(e) 
    { 
        if (e.ctrlKey && e.keyCode == 81) 
        {
            alert("CTRL+Q Pressed");
        }
    });

Working Demo hier

Andere Tipps

Hängt davon ab, was Sie versuchen zu erreichen.

Paar Hinweise:

  • die Ereignisdaten Sie vorbei sind sollte ein Objekt anstelle eines einzigen Zeichen sein.
  • die keyup Handler tut nichts mit dem == Vergleich. Sie haben wahrscheinlich bedeutete eine = Zuordnung zu verwenden.

$(document).keyup( { theChar:"q" }, function(e) {
   holdingctrl = false;
});

Ich bin mir nicht ganz sicher, was Sie versuchen, mit diesem Code-Schnipsel zu tun, aber Sie können prüfen, ob ctrl wird unter Verwendung der event.ctrlKey Eigenschaft gedrückt:

$(document).keydown(function(e) {
    if (e.ctrlKey && (e.keyCode == 81)) { // ctrl + q
        alert("Pressing Q and ctrl: Success.");
    }
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top