jquery keypress Ereignis einige Male ausgelöst

8

Hi Ich habe einen Autocomplete-Eingabetext eingerichtet. Ich versuche, das Ereignis des Nachdrucks der Tabelle auf Klicken eines btn und auf einer Enter-Taste zu feuern. Der BTN-Klick funktioniert gut und aber der Enter-Taste drücken scheint wie es ein paar Mal vor dem Stoppen (Bedeutung der Tabelle flackert)

%Vor%

es passiert nicht die ganze Zeit und unterscheidet sich in verschiedenen Browsern.

    
devmonster 13.06.2012, 12:08
quelle

5 Antworten

12

Das Keydown-Ereignis in Verbindung mit einem HTML-Textfeld reicht nicht aus, um zu verhindern, dass es mehrmals ausgelöst wird. Sie können dieses Verhalten in Aktion auf dem jquery-Demoabschnitt des keydown-Ereignisses sehen: Ссылка

Eine mögliche Lösung ist die Verwendung des Eventhandlers "one" (siehe Ссылка ). Dadurch wird sichergestellt, dass das Ereignis nur einmal behandelt wird:

%Vor%     
Beriz 12.11.2012, 14:10
quelle
7

Dies ist das korrekte Verhalten des Tastendruckereignisses. Das Keypress-Ereignis wird so lange ausgelöst, wie die Taste gedrückt ist (so als ob Sie in einem Textfeld eine char-Taste gedrückt halten, das Zeichen wird mehrmals hinzugefügt, dies bezieht sich auf den Tastendruck). Verwenden Sie für Einmal-Handle-Bedingungen je nach Bedarf entweder das Tasten- oder das Tastenereignis. Sowohl die Tastenkombination als auch die Tastenkombination werden nur einmal ausgelöst. Es geht wie folgt:

%Vor%     
techfoobar 13.06.2012 12:12
quelle
4

Ссылка

  

Das Tastendruckereignis wird an ein Element gesendet, wenn der Browser die Tastatureingabe registriert. Dies ist mit Ausnahme des Ereignisses "keydown" ähnlich   im Falle von Schlüsselwiederholungen. Wenn der Benutzer eine Taste drückt und hält, a   Das Keydown-Ereignis wird einmal ausgelöst, es sind jedoch separate Tastendruckereignisse vorhanden   für jedes eingefügte Zeichen ausgelöst. Außerdem Modifikatortasten   (z. B. Shift) triggert Keydown-Ereignisse, aber keine Tastendruck-Ereignisse.

Verwenden Sie stattdessen Keydown.

    
psych 13.06.2012 12:11
quelle
1

Versuchen Sie, "Tastendruck" in "Tastendruck" zu ändern.

  

Das Tastendruckereignis wird an ein Element gesendet, wenn der Browser die Tastatureingabe registriert. Dies ist ähnlich dem Keydown-Ereignis, außer im Fall von Schlüsselwiederholungen. Wenn der Benutzer eine Taste drückt und hält, wird ein Keydown-Ereignis einmal ausgelöst, aber für jedes eingefügte Zeichen werden separate Tastendruckereignisse ausgelöst.

Von Ссылка

    
joshschreuder 13.06.2012 12:13
quelle
1

Die Dokumentation für den Tastendruck lautet:

  

Da die .keypress () -Methode nur eine Kurzform für .on ("keypress", handler) ist, ist das Trennen mit .off ("keypress") möglich.

Somit können Sie den Handler ablösen, indem Sie vor der Bindung .off () hinzufügen. Ich würde auch die .bind () - Funktion durch .on () ersetzen, da bind jetzt veraltet ist. So etwas sollte funktionieren:

%Vor%     
Chris 19.05.2015 09:27
quelle

Tags und Links