it-swarm.com.de

tastendruckereignis funktioniert nicht IE und Chrome arbeiten aber in FF

Irgendeine Idee, warum das passieren könnte? Ich würde normalerweise denken, dass Chrome mit den Codes mehr verzeihen würde?

$(document).keypress(function(e) {
    if(e.keyCode == 39) rightImage();
    if(e.keyCode == 37) leftImage();
});

So sieht mein Tastendruck aus. Vermisse ich etwas? rightImage (); und leftImage (); sind Funktionen, die funktionieren sollten, weil ich diese Funktionen auch woanders verwende

Danke für die Hilfe!

14
hellomello

Ändern Sie keypress in keydown:

$(document).keydown(function(e) {
    if(e.keyCode == 39) rightImage();
    if(e.keyCode == 37) leftImage();
});

Das Tastendruckereignis tritt ein, wenn die Taste gedrückt wird, unmittelbar gefolgt vom Tastendruckereignis. Das Keyup-Ereignis wird dann generiert, wenn der Schlüssel losgelassen wird.

Um den Unterschied zwischen Tastenbetätigung und Tastendruck zu verstehen, ist es hilfreich, den Unterschied zwischen einem "Zeichen" und einer "Taste" zu verstehen. Ein "Schlüssel" ist eine physische Taste auf der Computertastatur, während ein "Zeichen" ein Symbol ist, das durch Drücken einer Taste eingegeben wird. Theoretisch stellen die Ereignisse keydown und keyup das Drücken oder Loslassen von Tasten dar, während das Ereignis keypress ein Zeichen darstellt, das gerade eingegeben wird. Die Implementierung der Theorie ist nicht in allen Browsern gleich.

36
jao

Fanden die Antwort hier: http://api.jquery.com/keypress/

"Wenn Sie in Chrome Pfeile, Löschen und Rücktasten verwenden möchten, müssen Sie die Tastendrücke verwenden. Das Drücken dieser Tasten funktioniert nur in Firefox und Opera."

Ihr Code hat in iE8 nicht funktioniert (hat in FF funktioniert), daher habe ich den Tastendruck auf Tastendruck umgestellt. Funktioniert jetzt in IE. Sie müssen Chrome hier nicht testen.

2
AR.

ja, dies kann erreicht werden, indem das Ereignis onkeypress in onkeydown geändert wird. Darüber hinaus tritt dieses Problem nur im Fall von Internet Explorer auf, wenn Sie ein Ereignis beim Klicken mit der Leertaste auslösen möchten.

0
Vivek Singh