¿Debo utilizar el evento change
o textInput
para capturar la entrada del usuario en un control TextInput? ¿Por qué?Capturando la entrada del usuario desde el control Flex TextInput: ¿qué evento usar?
Respuesta
textInput
se envía solo cuando el usuario tiene entrada texto en el control. change
, por otro lado, se envía en cada cambio cometido por el usuario. Por ejemplo, si el usuario elimina una parte del texto, solo se envía el evento change
.
Ninguno de estos se distribuye cuando el texto se modifica a través de código:
flash.events.TextEvent.TEXT_INPUT
:
"distribuye cuando el usuario tipos, elimina, o pastas de texto en el control ."
(ignorar la palabra "eliminar" no - yo sólo probamos y este evento es no se distribuye cuando el texto se elimina por el usuario)
"se distribuye al texto en los cambios de control a través de TextInput usuario entrada. Este evento no se produce si se utilizan los datos de unión o ActionScriptCódigo depara cambiar el texto. "
También puede utilizar el evento valueCommit
, que se distribuye cuando el usuario "se compromete" los cambios (por lo general moviendo el foco lejos del campo de texto), pero recuerda que este evento también se distribuye cuando el campo el valor se cambia programáticamente.
Esa es una gran respuesta, hasseg. Si tuviera suficiente representante, lo votaría.
Dependiendo de lo que está capturando la entrada del usuario para, usted podría subclase del componente TextInput y anular los oyentes internos para el cambio y eventos textInput.
No sé si hay muchas razones por las que desea hacer esto, pero lo hice recientemente para tratar un error en OS X que causa que los saltos de línea pegados se representen como '\ r', en lugar de '\ n'.
Todo lo que necesita hacer es añadir la siguiente llamada después de su super() en el constructor de su objeto subclases:
this.addEventListener(Event.CHANGE, textFieldChangeListener);
this.addEventListener(TextEvent.TEXT_INPUT,textFieldInputListener);
y luego añadir los métodos de detección y el código que desea ejecutar.
Tanto Event.CHANGE y TextEvent.TEXT_INPUT eventos de disparo para cada carácter escrito. Si desea un evento que solo se active una sola vez para un campo de entrada de texto determinado, use FocusEvent.FOCUS_OUT.
Como Event.CHANGE y TextEvent.TEXT_INPUT, este evento solo se activará para la entrada del usuario, no para cambios programáticos al valor.
Me di cuenta después de enviar esto que usar FOCUS_OUT no es un gran enfoque porque, si bien es cierto que solo se desencadena una vez por campo, no dice nada sobre si el usuario cambió el valor o no. – hrabinowitz
Parece que, como lo ha hecho con las notas de arriba, ese CAMBIO es la mejor elección para escuchar los cambios del usuario en un campo de entrada de texto. Sin embargo, si el usuario escribe control-C para copiar un valor de campo, esto también activará un evento CHANGE. – hrabinowitz
CHANGE
duerma te diga lo ha cambiado sin embargo - TEXT_INPUT
y KEY_DOWN
hacer.
Sin embargo, puede tomar la totalidad del texto de TextInput al procesar el evento CHANGE si necesita usar el resultado final para algo. –
- 1. Flex 4.6 TextInput con solicitud en IOS se comporta mal
- 2. ¿Cómo disparo un evento personalizado desde un Control de usuario?
- 3. Determinar si el evento modificado se produjo a partir de la entrada del usuario o no
- 4. ¿Validar la entrada del usuario?
- 5. ¿Cómo puedo generar un evento enrutado personalizado desde el control del usuario?
- 6. evento inicializado del control de usuario de WPF no disparar
- 7. Flex 4 detectar si el usuario presiona la tecla enter
- 8. ¿Qué control usar para ingresar texto rápido (cuadro de entrada)?
- 9. JavaScript: ¿Cómo obtener el valor del elemento de entrada del remitente desde el evento keyup?
- 10. Capturando todos <a> clic evento
- 11. ¿Por qué mi control no acepta la entrada del teclado?
- 12. ¿Cómo puedo usar las expresiones regulares de forma segura desde la entrada del usuario?
- 13. ¿Por qué debería usar Flex?
- 14. Deshabilitar la carga de imágenes desde el control del webbrowser antes del evento de documento completado
- 15. Criar un evento en la ventana principal desde un control de usuario en .NET C#
- 16. Establecer el foco en un texto emergente Control de entrada
- 17. Obtener entrada del usuario
- 18. Colocando el cursor (cursor parpadeante) en la entrada TextField para la entrada del usuario en AS3.
- 19. cómo corregir la entrada del usuario
- 20. ¿Cómo obtengo información sobre el navegador del usuario en Flex?
- 21. Capturando estándar desde tail -f "follow"
- 22. ¿Dónde `getchar()` almacena la entrada del usuario?
- 23. El evento de clic de control del usuario no funciona al hacer clic en el texto dentro del control?
- 24. ¿Detecta el retroceso y el del evento de "entrada"?
- 25. WPF - Manejo de eventos desde el control del usuario en el modelo de vista
- 26. Cómo manejo el evento click en el control Spark List en Flex 4
- 27. Historial de entrada del formulario seleccione evento
- 28. MVC: ¿El modelo o controlador valida la entrada del usuario?
- 29. Cómo detectar el carácter de entrada del usuario en UITextView
- 30. Evento de reenvío en FLEX
Muchas gracias por la respuesta aclaratoria. Como nota al margen: Hice algunas pruebas y descubrí que al acceder a la propiedad 'text' en el controlador de eventos para el evento' textInput' (usando 'event.currentTarget.text'), el valor que obtengo refleja el valor de' text' _antes_ de la pulsación de tecla que activó el evento. –
Eso no es cierto para mí, al menos no en Flex 4.5 (creo que Flex 4 también) usando spark TextInput. Obtengo el último valor de texto en el evento de cambio, también hay un evento cambiante enviado anteriormente. – Enrique