Dois-je utiliser l'événement change
ou textInput
pour capturer l'entrée utilisateur sur un contrôle TextInput? Pourquoi?Capture de l'entrée utilisateur depuis le contrôle Flex TextInput: quel événement utiliser?
Répondre
textInput
est envoyé uniquement lorsque l'utilisateur a entrée le texte dans le contrôle. change
, d'autre part, est distribué à chaque changement commis par l'utilisateur. Par exemple, si l'utilisateur supprime une partie du texte, seul l'événement change
est distribué.
Aucun de ceux-ci est transmis lorsque le texte est modifié via le code:
flash.events.TextEvent.TEXT_INPUT
:
"Distribué lorsque l'utilisateur types, efface le texte ou les pâtes dans le contrôle ."
(ignorer le mot "supprimer" là - je viens d'essayer et cet événement est pas envoyé lorsque le texte est supprimé par l'utilisateur)
«Distribué lorsque le texte du contrôle TextInput change via l'entrée de l'utilisateur Cet événement ne se produit pas si vous utilisez la liaison de données ou ActionScript code pour changer le texte. "
Vous pouvez également utiliser l'événement valueCommit
, qui est distribué lorsque l'utilisateur « engage » les changements (habituellement en déplaçant l'accent mis sur le champ de texte), mais rappelez-vous que cet événement est également distribué lorsque le champ La valeur est modifiée par programme.
C'est une bonne réponse, hasseg. Si j'avais assez de représentant, je le voterais. En fonction de ce pour quoi vous saisissez l'entrée utilisateur, vous pouvez sous-classer le composant TextInput et remplacer les écouteurs internes pour les événements change et textInput. Je ne sais pas s'il y a beaucoup de raisons que vous voudriez faire ceci, mais je l'ai fait récemment pour traiter un bogue dans OS X qui fait que les sauts de ligne collés soient représentés comme '\ r', au lieu de '\ n'.
Tout ce que vous devez faire est d'ajouter ce qui suit après votre appel super() dans le constructeur de votre objet sous-classé:
this.addEventListener(Event.CHANGE, textFieldChangeListener);
this.addEventListener(TextEvent.TEXT_INPUT,textFieldInputListener);
Et puis ajoutez les méthodes d'écoute et le code que vous voulez exécuter.
Les événements Event.CHANGE et TextEvent.TEXT_INPUT déclenchent chaque caractère typé. Si vous voulez un événement qui ne déclenchera qu'une seule fois pour un champ TextInput donné, utilisez FocusEvent.FOCUS_OUT.
Comme Event.CHANGE et TextEvent.TEXT_INPUT, cet événement se déclenchera uniquement pour l'entrée utilisateur, pas pour les modifications programmatiques de la valeur.
J'ai réalisé après avoir soumis cela que l'utilisation de FOCUS_OUT n'est pas une bonne approche car, s'il est vrai qu'elle n'est déclenchée qu'une fois par champ, elle ne dit rien sur le fait que l'utilisateur a changé la valeur ou non. – hrabinowitz
Il semble donc, comme précédemment mentionné, que CHANGE soit le meilleur choix global à écouter pour les changements d'utilisateur dans un champ TextInput. Toutefois, si l'utilisateur tape control-C pour copier une valeur de champ, cela déclenchera également un événement CHANGE. – hrabinowitz
CHANGE
ne marche pas vous dire ce que a bien changé - TEXT_INPUT
et KEY_DOWN
faire.
Vous pouvez toutefois récupérer l'intégralité du texte à partir de TextInput lors du traitement de l'événement CHANGE si vous devez utiliser le résultat final pour quelque chose. –
- 1. Récupérer ID utilisateur depuis ASP.Net Contrôle de connexion événement LoggedIn
- 2. Quel événement de contrôle utilisateur intervient entre la liaison de données (autres contrôles) et le rendu?
- 3. attraper un événement de contrôle utilisateur
- 4. Flex TextInput Clic gauche - Parent Steals Focus
- 5. Style TextInput Itemrenderer dans Flex Datagrid
- 6. Flex TextInput Control: Rendu de style de recherche
- 7. Flex 3 - Signe d'égalité (=) dans le contrôle TextInput Affiche comme un signe plus (+) dans Firefox
- 8. DataGridView capture sélection de ligne utilisateur
- 9. Quel répartiteur utiliser? La fenêtre ou le contrôle?
- 10. Quel système de contrôle de version utiliser?
- 11. Capture d'un événement KeyUp sur un formulaire lorsque le contrôle enfant a le focus
- 12. Nouveauté de WPF - Quel contrôle utiliser/démarrer?
- 13. Flex 3: Création dynamique et liaison de textinput
- 14. Capture de tous les événements de clic dans le contrôle utilisateur
- 15. capture capture instantanée avec contrôle flash
- 16. événement de redimensionnement en flex
- 17. Création de contrôles utilisateur Web depuis ascx.cs
- 18. Capture d'images fixes depuis avi sous Windows
- 19. Script Flex et événement Question
- 20. Contrôle utilisateur - appel d'un événement de clic vb linkbutton (dans un contrôle utilisateur) à partir de javascript
- 21. Problèmes de communication avec le pilote depuis le mode utilisateur
- 22. Flex Résultat événement ... question
- 23. Quel événement dois-je ajouter par programmation à un contrôle?
- 24. Capture événement javascript dans IE Mobile
- 25. Restauration des paramètres de l'interface utilisateur dans C# WinForms - à quel événement répondre?
- 26. utiliser le même validateur sur plusieurs contrôles dans Flex
- 27. DataSource pour le contrôle utilisateur
- 28. Comment utiliser un contrôle utilisateur asp.net dans un autre contrôle utilisateur?
- 29. Quel événement listbox dois-je utiliser pour définir la position de défilement
- 30. Comment pouvez-vous garder la mise au point et le curseur dans le TextInput de Flex après avoir appuyé sur enter?
Merci beaucoup pour la réponse de clarification. En note: j'ai fait quelques tests et j'ai trouvé que lorsque j'accédais à la propriété 'text' dans le gestionnaire d'événements pour l'événement' textInput' (en utilisant 'event.currentTarget.text'), la valeur que j'obtiens reflète la valeur de' text' _before_ la touche qui a déclenché l'événement. –
Ce n'est pas vrai pour moi, du moins pas dans Flex 4.5 (je suppose que Flex 4 aussi) en utilisant spark TextInput. Je reçois la dernière valeur de texte dans l'événement change, il y a aussi un événement changeant distribué avant. – Enrique