3 Stimmen

Wie kann man feststellen, ob eine Schicht freigegeben wurde?

Ich möchte in der Lage sein, eine Funktion auszuführen, wenn die Umschalttaste losgelassen wird.

Ich weiß, dass die Umschalttaste mit etwas wie erkannt werden kann:

$(window).bind("keydown keyup", function(ev) { ... });

Es funktioniert sehr gut bei der Erkennung von Tastenkombinationen (z. B. shift+a ). Das Problem ist, wenn Sie die Umschalttaste selbst erkennen wollen, löst dies eine keydown mit ev.shiftKey=false , ev.which=16 und eine keyup mit ev.shiftKey=true , ev.which=16 . Ich habe versucht, ein Ereignis mit dieser Kombination zu verknüpfen auf keyup Dies funktioniert jedoch auf sehr subtile Weise nicht, wenn beide Umschalttasten gedrückt werden: Für die zweite Umschalttaste erhalten Sie sowohl keyup/keydown mit true,16 und dann erhalten Sie eine weitere keyup mit true,16 wenn die erste Umschalttaste losgelassen wird.

Gibt es eine saubere Möglichkeit, dies zu tun? Oder sollte ich einfach ignorieren die zwei Umschalttaste Fall?

1voto

dmackerman Punkte 2898

Es ist unwahrscheinlich, dass jemand beide UMSCHALT-Tasten gleichzeitig drückt, es sei denn, er versucht absichtlich, Ihre Anwendung zu zerstören. Sie können nicht entwerfen ( lesen : Zeit vergeuden ) Randfälle zu kodieren, wenn 99 % Ihrer Benutzer in diesem Fall niemals beide Tasten drücken würden.

Ihre Logik zur Bestimmung der Tastendrücke ist gut. Legen Sie eine Variable fest und erhöhen/verringern Sie sie auf der Grundlage der gedrückten Tasten, und wenn sie gleich 0 ist, dann wurde nichts gedrückt. Presto bammo.

EDIT: ODER mach einfach, was Brian in seinem Kommentar gesagt hat! :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X