Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/11/2016, 11:46
Avatar de majete
majete
 
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Exclamación Detectar evento "onchange" en lista desplegable

Hola a todos,
Entiendo que esto que necesito hacer es posible, pero me estoy volviendo loco para encontrar la forma de conseguirlo.

Estoy utilizando el plugin "formeter" (http://www.formeter.techlabs.ro/advanced.html) para tener una barra de progreso para un formulario. Cuando detecta un cambio en las listas desplegables o radiobuttons con el evento "ON CHANGE" hace su función y marca el avance en la barra. También si detecta el evento "ON KEYDOWN" para los campos de texto inputs.

El problema es que yo estoy sacando el valor de otra forma, no actuando directamente sobre ese elemento y lo que me pasa es que no funciona de esta manera.

Tengo este jquery
Código Javascript:
Ver original
  1. $(mainForm).find(sel + ':checkbox, ' + sel + ':radio, select' + sel).on('change', function () {
  2.                 animateBar.call(_this);
  3.             });
  4. $(mainForm).find('input[type=text]' + sel + ', input[type=password]' + sel + ', textarea' + sel + ', input[type=hidden]' + sel + ',  input[type=email]' + sel + ', input[type=tel]' + sel).on('keydown', function () {
  5.                 timer && clearTimeout(timer);
  6.                 timer = setTimeout(function () {
  7.                     animateBar.call(_this);
  8.                 }, 300);
  9.             });

Si yo en un campo del formulario escribo algo sobre el input todo funciona (coge el "KEY DOWN" pero si yo le asigno el valor de ese input de otra forma (se lo paso por jquery) al no detectar el evento el KEY DOWN no actúa.

¿Se os ocurre cómo puedo solucionarlo?

He probado cambiando el evento de "keydown" a "change" pero nada, no lo detecta, a pesar de que cambio el valor del input o de la lista desplegable. Me vale cualquiera de las dos porque puedo asignar un valor tanto a un campo INPUT como a un campo SELECT.

Mil gracias!!