Die Erfassung von Benutzereingaben von Flex TextInput-Steuerelement: welches Ereignis zu verwenden?
Sollte ich das change
oder textInput
Veranstaltung zum erfassen von Benutzereingaben auf einer TextInput-Steuerelement? Warum?
InformationsquelleAutor der Frage Niko Nyman | 2008-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
textInput
wird nur ausgelöst, wenn der Benutzer hat Eingang text in das Steuerelement.ändern -
auf der anderen Seite, ausgelöst wird bei jeder änderung verpflichtet, durch den Benutzer. So zum Beispiel, wenn der Benutzer löscht einen Teil des Textes, nur diechange
- Ereignis ausgelöst.Weder dieser wird ausgelöst, wenn der text geändert wird, über den code:
flash.Veranstaltungen.TextEvent.TEXT_INPUT
:(ignorieren Sie das Wort "löschen" hier-ich habe es gerade ausprobiert, und dieses Ereignis ist nicht wird ausgelöst, wenn der text vom Benutzer gelöscht)
flash.Veranstaltungen.Event.ÄNDERN
:Können Sie auch die
valueCommit -
Ereignis, das ausgelöst wird, wenn der Benutzer "commit" die änderungen (in der Regel durch verschieben des Fokus Weg vom text-Feld), aber denken Sie daran, dass dieses Ereignis wird auch ausgelöst, wenn der Wert des Feldes programmgesteuert geändert wird.InformationsquelleAutor der Antwort hasseg
"Das ist eine tolle Antwort, hasseg. Wenn ich genügend rep, würde ich bis-Abstimmung.
Je nachdem, was Sie erfassen die Eingabe, Sie könnte eine Unterklasse der TextInput-Komponente aus, und überschreiben die interne Listener für das change-und textInput-Veranstaltungen.
Ich weiß nicht, ob es gibt eine Menge Gründe, warum Sie wollen würde, um dies zu tun, aber ich habe es vor kurzem zum Umgang mit einem bug in OS X, die bewirkt, dass eingefügte Zeilenumbrüche dargestellt werden, als '\r', anstelle von '\n'.
Alles, was Sie tun müssen ist, fügen Sie den folgenden nach dem super () - Aufruf im Konstruktor Ihrer Unterklassen-Objekt:
Und fügen Sie der listener-Methoden und den code, den Sie ausführen möchten.
InformationsquelleAutor der Antwort Ross Henderson
Event.ÄNDERN und TextEvent.TEXT_INPUT-events-trigger auf jedes Zeichen eingegeben. Wenn Sie wollen, dass ein Ereignis nur auslösen, ein einziges mal für einen bestimmten TextInput-Feld, verwenden Sie FocusEvent.FOCUS_OUT.
Wie Event.ÄNDERN und TextEvent.TEXT_INPUT, wird dieses Ereignis nur der Auslöser für eine Benutzereingabe, die nicht für programmatische änderungen am Wert.
InformationsquelleAutor der Antwort hrabinowitz
CHANGE
nicht sagen, Sie was verändert hat, obwohl -TEXT_INPUT
undKEY_DOWN
tun.InformationsquelleAutor der Antwort Daniel Z