¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Soluciones para activar el evento de cambio al cambiar el valor de entrada en el evento liveChange

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 25 Vistas
0
Cargando...

Estimados Expertos,

Por favor, proporcionen algunas soluciones/consejos sobre el problema a continuación lo antes posible.

El cambio del valor de entrada en el evento liveChange no está activando el evento de cambio.

Código:

Vista :

<Input id="idInput" change="onChange" liveChange="onLiveChange"/>

controlador :

onLiveChange:function(oEvent){

oEvent.getSource().setValue(oEvent.getSource().getValue());

},

onChange:function(oEvent){

alert("onInputChange");

}

La alerta no se activa una vez que el foco sale del Input. La alerta se activa si no cambio el valor en el método liveChange.

¡Gracias de antemano!

Gracias & Saludos,

Prathyusha.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

prathyushab Sin conocer cuál es la lógica que se supone debe ser encapsulada, no puedo compartir ningún código. La encapsulación es una tarea de JavaScript básica que está fuera del alcance de SAPUI5. Simplemente llama, por ejemplo, a this.myEncapsulatedLogic(someArguments); en los manejadores `onChange` y `onLiveChange`.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Boghyon Hoffmann,

Muchas gracias por los detalles. ¿Puedes compartir algún ejemplo de código para el punto mencionado? Realmente me ayuda mucho.

Parece que estás intentando activar el controlador `onChange` en `onLiveChange`. Para manejar este escenario, considera crear un método separado que encapsule la lógica que deseas ejecutar cuando cambie el valor. Luego, llama a este método desde los controladores `onChange` y `onLiveChange`.

¡Gracias de nuevo!

Saludos cordiales,

Prathyusha.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Si cambias la propiedad `value` programáticamente en `onLiveChange` a través de `setValue` con el mismo valor nuevo, el control de entrada no dispara `change` después porque no detecta un cambio nuevo: la propiedad `value` ya había sido actualizada.

Parece que estás intentando activar el manejador `onChange` en `onLiveChange`. Para manejar este escenario, considera crear un método separado que encapsule la lógica que deseas ejecutar cuando cambie el valor. Luego, llama a este método desde los manejadores `onChange` y `onLiveChange`.

___

Para otros lectores que enfrenten problemas similares:

En general, el evento `change` de `sap.m.InputBase` se dispara solo cuando el usuario presiona enter o mueve el enfoque fuera del campo basado en los eventos nativos del navegador "keydown" y "blur" respectivamente. Llamar a `setValue` programáticamente no activa ninguno de esos eventos nativos.

Ten en cuenta también que, si alguna vez habilitas `valueLiveUpdate` mientras tienes la propiedad `value` vinculada a un modelo, tampoco se disparará ningún `change` según la referencia de la API. En ese caso, solo se activará el manejador de cambio registrado para el evento `liveChange`.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?