Elevar evento “onchange” cuando el elemento de entrada cambiada por JavaScript de ventana emergente

StackOverflow https://stackoverflow.com/questions/855264

Pregunta

Tengo una página web con un elemento de formulario y una ventana emergente (abierto por window.open).

Ambos tienen jQuery disponible.

La ventana emergente tiene un javascript que puede cambiar el elemento de formulario en la ventana de apertura. Eso funciona perfectamente haciendo ...

$(opener.document.formelement).val(vals[0]);

Sin embargo, haciendo que el evento onChange no se disparará. Que se necesitaría por algunos otros elementos de la página, sin embargo. Así que traté de disparar el evento onChange mí mismo con

$(opener.document.formelement).change();

Pero eso no hace nada.

¿Alguna pista? Definitivamente tiene que tener ese evento onChange despedido debido a la arquitectura de los otros elementos de la página.

Esta pregunta es similar a Llame Javascript onchange evento mediante programación el cambio de valor de cuadro de texto , pero no parecen las soluciones sugeridas a partir de esa pregunta a trabajar para mí. Tal vez eso se debe a la ventana emergente.

¿Fue útil?

Solución

Tal vez su la cruz-ventana que está haciendo daño a usted ... trate de hacer una función dentro del abridor de que llame a su lugar. Podría ayudar?

En primer partido:

window.changeMyElement = function(value) {
  $(formelement).val(value).change();
}

Desde emergente:

opener.changeMyElement(value);

Otros consejos

Se supone que esta línea funcione:

$(opener.document.formelement).change();

Según los esta línea desencadena el evento de cambio de cada elemento coincidente.

Si no funciona para usted, entonces hay un problema en su código en algún lugar. Se puede activar el evento onchange cambiando en el elemento de formulario a mano?

También puede hacer:

window.opener.document.getElementById('controlname').fireEvent('onchange');

O en su contexto:

$(opener.document.formelement).fireEvent('onchange');
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top