Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] onChange sin perder foco

Estas en el tema de onChange sin perder foco en el foro de Javascript en Foros del Web. Hola tengo un <input type="text"> y necesito disparar una función cuando cambie su valor. El tema es que el evento onChange recién se dispara cuando ...
  #1 (permalink)  
Antiguo 23/11/2019, 13:30
 
Fecha de Ingreso: mayo-2003
Mensajes: 498
Antigüedad: 16 años, 6 meses
Puntos: 6
onChange sin perder foco

Hola tengo un <input type="text"> y necesito disparar una función cuando cambie su valor. El tema es que el evento onChange recién se dispara cuando el elemento pierde el foco, yo necesito disparar la función en cuanto el cambio se produzca.
El valor del input no cambia por teclado, es un valor que se selecciona de una ventana modal. ¿Hay alguna forma de lograr esto?

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 23/11/2019, 18:09
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.565
Antigüedad: 11 años, 9 meses
Puntos: 1087
Respuesta: onChange sin perder foco

Haz probado con

Código Javascript:
Ver original
  1. miInput.addEventListener('input', function(datos){
  2.     console.log('this', this, 'datos', datos);
  3. })
  #3 (permalink)  
Antiguo 24/11/2019, 04:17
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.100
Antigüedad: 15 años, 6 meses
Puntos: 790
Respuesta: onChange sin perder foco

Me parece que deberás usar temporizadores para hacer ese control:
Código:
<!DOCTYPE html>
<html>
<body>
<input type="text" id="myInput">
<p id="demo"></p>
<script>
//simulación de ingreso de valores sin teclado
setTimeout(function(){document.getElementById("myInput").value=5;},1000);
setTimeout(function(){document.getElementById("myInput").value=15;},2000);
setTimeout(function(){document.getElementById("myInput").value=8;},3000);

//aquí empezamos el control
var memo=document.getElementById("myInput").value;

//aquí chequeamos c/100 milisegundos
setInterval(function(){if(memo!=document.getElementById("myInput").value){memo=document.getElementById("myInput").value;document.getElementById("demo").innerHTML='nuevo valor:'+memo;}},100);
</script>
</body>
</html>
  #4 (permalink)  
Antiguo 26/11/2019, 12:45
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.431
Antigüedad: 8 años
Puntos: 930
Respuesta: onChange sin perder foco

¿Cómo realizas la carga del valor seleccionado en la ventana modal? Si para ello utilizas un script, en el mismo, luego de la asignación del valor, podrías ejecutar la función a la cual haces referencia.

__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #5 (permalink)  
Antiguo 28/11/2019, 14:48
 
Fecha de Ingreso: mayo-2003
Mensajes: 498
Antigüedad: 16 años, 6 meses
Puntos: 6
Respuesta: onChange sin perder foco

Muchas gracias por todas sus respuestas, fueron muy útiles.
Finalmente, como estoy trabajando bajo jquery lo hice así:

$('#'+campo1).trigger('change');

Esto dispara el evento change del elemento.



La zona horaria es GMT -6. Ahora son las 21:44.