2010-12-30 8 views
1

Ich habe die folgenden Funktionen zum Umschalten des Inhalts für divs mit Tastenkombinationen codiert. Grundsätzlich zeige ich 2 Bilder an, die zu einem anderen Onkeydown geändert werden. Wenn onkeyup, wird das Bild wiederhergestellt.Keypress-Check (onkeyup wird nicht ausgelöst)

Es funktioniert wunderbar, solange nur eine Taste gedrückt wird. Wenn ich die Tastenkombination [224 + 86] (Meta + V) mache, bleibt der zuletzt freigegebene Schlüssel "onkeydown" (aus irgendeinem Grund wird kein onkeyup generiert).

//CMD 
$(document).keydown(function (e) { 
    if (e.keyCode == 224) 
     document.getElementById("loading").innerHTML = '<div style="position: absolute; left: -30px; top: 8px; width: 600px; height:600px; padding: 0px; border: 0px; z-index:200; padding:158px;"><img src="img/mac/1_b.png" /></div>';  
}); 

$(document).keyup(function (e) { 
    if (e.keyCode != 224) 
     document.getElementById("loading").innerHTML = '<div style="position: absolute; left: -30px; top: 8px; width: 600px; height:600px; padding: 0px; border: 0px; z-index:200; padding:158px;"><img src="img/mac/1.png" /></div>'; 
}); 

//V 
$(document).keydown(function (e) { 
    if (e.keyCode == 86) 
     document.getElementById("loading2").innerHTML = '<div style="position: absolute; left: 95px; top: 9px; width: 600px; height:600px; padding: 0px; border: 0px; z-index:200; padding:158px;"><img src="img/mac/2_b.png" /></div>';  
}); 

$(document).keyup(function (e) { 
    if (e.keyCode == 86) 
     document.getElementById("loading2").innerHTML = '<div style="position: absolute; left: 95px; top: 9px; width: 600px; height:600px; padding: 0px; border: 0px; z-index:200; padding:158px;"><img src="img/mac/2.png" /></div>';  
}); 

Kann mir bitte jemand in die richtige Richtung zeigen? Vielen Dank für einen Hinweis!

+0

Könnten Sie einen reproduzierbaren Testfall auf [jsbin.com] (http://jsbin.com/) oder etwas ähnliches setzen? –

+0

http://jsbin.com/iximo3/4 – DonCroce

+0

Ich denke, Sie können es nicht testen, weil Sie einen Mac haben müssen. – DonCroce

Antwort

1

Ich denke, das Problem ist, dass Sie diese zu viel trennen. Sie sollten alle im selben Event-Handler kombinieren und sehen, was passiert. Sie sollten die Logik auch kombinieren.

Statt dies viele Male tun:

$(document).keydown(function (e) { 
    if (e.keyCode == 224) 
     document.getElementById("loading").innerHTML = '....';  
}); 

Versuchen Sie, die Logik in eine Callback-Ereignis kombiniert:

$(document).keydown(function (e) { 
    if (e.keyCode == 224) 
     document.getElementById("loading").innerHTML = '....'; 
    if (e.keyCode == 86) 
     document.getElementById("loading2").innerHTML = '....'; 
}); 

auch - sind Sie sicher, dass Sie den richtigen Schlüssel für die CMD-Taste haben? Ich denke, es ist ein bisschen schwieriger zu erkennen als das, was Sie hier tun - http://www.quirksmode.org/js/keys.html. Sehen Sie sich hier an: jQuery key code for command key für einige Vorschläge zur Verwendung des CMD-Schlüssels.

+0

Ich kopiere das im Grunde aus der jquery Skriptbibliothek, weil ich nicht viel js Zeug weiß :( – DonCroce

+0

Kannst du bitte deine Gedanken ein wenig weiter erklären? Danke;) – DonCroce

+0

Ich bin mir sicher, den richtigen Schlüssel zu haben - ansonsten Es wird nichts auslösen. Ich habe es mit Ihrem Vorschlag versucht, aber es gibt immer noch das Problem, dass eine Multitasten-Presse Probleme verursachen wird. Ich dachte daran, ein Skript hinzuzufügen, um das so zu vermeiden: setinterval (Wenn (keydown == Keycode) zurück zum normalen Bild, 100); Aber ich weiß nicht, wie es geht ... :( – DonCroce

Verwandte Themen