Eine der am meisten empfohlenen Möglichkeiten, auf eine Änderung eines Eingabetextfeldes zu warten, besteht darin, dieses Feld an ein Key-Up-Ereignis zu binden. Das funktioniert in den meisten Fällen gut. Aber es gibt Fälle, in denen dies nicht funktioniert. In Firefox zum Beispiel hat man die Möglichkeit, wenn Text bereits ausgewählt ist, diese über das Kontextmenü zu löschen. Und dies löst kein Key-up-Ereignis aus. Ich habe kein Ereignis gefunden, das für dieses Textfeld ausgelöst wird. Irgendwelche Vorschläge, wie ich darauf reagieren kann (in reinem Javascript oder jQuery)?Höre auf das Löschen des Eingabewerts
Antwort
Sehen Sie die oninput
Veranstaltung, und meine schreiben darüber here.
oninput
wird für alle Formen der Texteingabe ausgelöst - einschließlich Ausschneiden, Einfügen, Rückgängig machen, Wiederholen, Löschen, Ziehen und Fallenlassen und Rechtschreibkorrekturen. Es ist ein HTML 5-Ereignis, das in Internet Explorer 8 und niedriger nicht unterstützt wird (aber es ist in der neuesten IE 9-Vorschau). Internet Explorer unterstützt jedoch ein proprietäres Ereignis für alle DOM-Objekte - onpropertychange
. Dies wird ausgelöst, wenn sich der Wert eines Eingabeelements ändert.
Ich habe nicht bemerkt, Sie mit jquery — markiert würden, da du getan hast, ist es wahrscheinlich erwähnenswert, dass ich ein Plugin schrieb den oninput
Ereignis Cross-Browser zu implementieren. Sie können es finden.
Der beste Weg ist, den Wert auf einem focus
Ereignis zu speichern und den Wert auf einem blur
Ereignis erneut zu überprüfen. Das Abhören von Schlüsselereignissen löst viele normalerweise redundante Prozesse aus. Die meiste Zeit sind Sie nur an einem Feldwert interessiert, wenn der Benutzer die Eingabe (oder das Löschen) beendet hat.
Dies funktioniert über den Browser, obwohl das Delegieren von Fokus/Unschärfe in einigen Browsern ein Problem darstellen kann. Der einfachste Weg ist das direkte Anwenden von Blur/Fokus-Listenern auf das Element.
Nur Ausnahmen sind Implementierungen wie Autosuggest/Complete, und selbst dann möchten Sie möglicherweise die Tasteneingabe entprellen, sodass sie nur ausgelöst wird, wenn der Benutzer einige hundert Millisekunden im Leerlauf läuft.
- 1. Änderung des Eingabewerts nicht verfolgen können
- 2. Wie Ein-/Ausblenden des Eingabewerts im Fokus?
- 3. Höre auf faul aufzählbar
- 4. Wie höre ich auf das Blur-Ereignis im gesamten Formular?
- 5. Übergabe des Eingabewerts an eine andere Seite mit $ _SESSION
- 6. Cursorposition abnormal am Ende des Eingabewerts in Chrome
- 7. Berechneter Wert Erhalten des vorherigen Eingabewerts mit reactjs setState callback
- 8. Berechnung des Eingabewerts der Bereichsvariablen in Winkel js
- 9. Löschen des Objekts, das ein Zeiger in einem Zeigervektor auf
- 10. Wie höre ich meinen Service auf?
- 11. Was bedeutet das Löschen des Eingabepuffers?
- 12. Wie höre ich git bisect auf?
- 13. Ich höre EACCES auf meiner Nodejs App
- 14. Wie höre ich das Größenänderungs-Event von Stage in JavaFX?
- 15. Wie höre ich das Ereignis eines verspotteten Objekts?
- 16. Was höre ich davon, dass das Tabellen-Tag veraltet ist?
- 17. Löschen des Caches auf AWS Redshift
- 18. Wann höre ich auf, aus einer Datei zu lesen?
- 19. Wie höre ich auf, dass ein div Speicherplatz einnimmt?
- 20. Löschen des Quellbaums
- 21. Löschen des Terminalbildschirms?
- 22. höre auf HTTP-Anfragen eines Firefox-Tabs mit einem Plugin
- 23. Tippen Sie auf das Menü, um das Element zu löschen
- 24. Chromecast: Löschen des Empfängercaches
- 25. jQuery: Wie höre ich nach allgemeinen Tastatureingaben?
- 26. Wie höre ich auf, Eigenschaften von Updates zu binden?
- 27. knockout.js und höre zu Check-Ereignis auf Kontrollkästchen
- 28. Ist die Genauigkeit von nextProbablePrime() mit der Größe des Eingabewerts verknüpft?
- 29. Löschen des Zookeeper-Datenverzeichnisses
- 30. Löschen des lokalen Speichers
Sie haben dieses Problem zugenäht, denke ich. –
@Tim: haha, ich versuche es sicher :-) –
@Tim: Abgesehen von den Bugs, die er in seinem Blogpost erwähnt, ja. –