Warum funktioniert das Ereignis "keydown" wie das Ereignis "keypress"?

8

Der nächste Beispielcode gibt eine "Keydown" -Meldung viele Male aus, während ich eine Taste gedrückt halte. Die Dokumentation sagt , dass das Keydown-Ereignis einmal für einen einzigen Tastendruck ausgelöst wird. Das Keydown-Ereignis funktioniert also wie das Keypress-Ereignis im nächsten Beispiel.

%Vor%

Ich habe es unter Windows, Firefox 19.0.2 und Google Chrome 25.0.1364.152 getestet. Außerdem habe ich eine Geige erstellt (das Problem kann reproduziert werden). JQuery-Versionen, für die das Problem reproduziert wird: 1.8.2, 1.9.1.

Aktualisieren.

Ich erkannte das Problem: Wie kann ich automatische Wiederholung vermeiden? Keydown-Ereignisse in JavaScript? .

    
sergzach 09.03.2013, 12:27
quelle

4 Antworten

20
  

Das keydown -Ereignis tritt auf, wenn die Taste gedrückt wird, unmittelbar gefolgt vom keypress -Ereignis. Dann wird das Ereignis keyup generiert, wenn der Schlüssel freigegeben wird.

     

Um den Unterschied zwischen keydown und keypress zu verstehen, ist es nützlich, den Unterschied zwischen einem "Zeichen" und einem "Schlüssel" 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 Tasten dar, die gedrückt oder losgelassen werden, während das Ereignis keypress ein Zeichen darstellt, das getippt wird. Die Implementierung der Theorie ist nicht in allen Browsern gleich.

    
deadlock 09.03.2013, 12:31
quelle
9

Das KeyPress-Ereignis wird nicht durch Noncharacter-Tasten ausgelöst. Die Non-Character-Tasten lösen jedoch die KeyDown- und die KeyUp-Ereignisse aus.

Schlüsselereignisse treten in der folgenden Reihenfolge auf:

  1. KeyDown
  2. KeyPress
  3. KeyUp

Sind diese Ereignisse in den fokussierbaren Elementen Fenster, Dokument, Formular verfügbar?
Testseite

    
Umair Saleem 09.03.2013 12:35
quelle
1

Das Keydown-Ereignis tritt auf, wenn die Taste gedrückt wird, gefolgt von dem Tastendruck-Ereignis.

    
Mario Araque 09.03.2013 12:30
quelle
1

Ich antworte hier und folge mir langsam: keydown : funktioniert, wenn du mit der Eingabe von Schlüssel anfängst oder beginnst, etwas zu ändern, und keydown gibt dir ein Ergebnis für einen Druck, aber gib dir das Ergebnis vor dem letzten nicht letzten Ergebnis. keyup : funktioniert, wenn Sie einen Schlüssel nicht mehr eingeben oder zurückgehen (ändern Sie etwas wie Zeichen entfernen) und geben Sie das letzte Ergebnis. keypress : funktioniert, wenn du anfängst, key zu tippen, aber nicht anfängst, etwas zu ändern, und keydpress gibt dir ein Ergebnis für einen Druck, aber gib dir das Ergebnis vor dem letzten, welches (lastResult - 1)

    
Saad Laggoune 07.01.2016 19:15
quelle

Tags und Links