Sollevare evento “onChange” quando elemento di input è cambiato da JavaScript da un'altra finestra

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

Domanda

Ho una pagina web con un elemento del modulo e una finestra pop-up (aperta da window.open).

Entrambi hanno jQuery disponibili.

La finestra pop-up ha un javascript che può cambiare l'elemento del modulo nella finestra di apertura. Che funziona perfettamente facendo ...

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

Tuttavia facendo che l'evento onChange non scatta mai. Che sarebbe richiesto da alcuni altri elementi della pagina, però. Così ho provato a generare l'evento onChange me stesso con

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

Ma che non fa nulla.

Eventuali suggerimenti? Io sicuramente avere tale evento onChange licenziato a causa della architettura degli altri elementi della pagina.

Questa domanda è simile a chiamata JavaScript onchange evento programatically cambiando il valore di testo , ma le soluzioni proposte da questa domanda non sembrano funzionare per me. Forse è a causa della comparsa.

È stato utile?

Soluzione

Forse il suo cross-finestra che è male si ... provare a fare una funzione all'interno di apertura che si chiama invece. Potrebbe aiutare?

In apertura:

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

Da comparsa:

opener.changeMyElement(value);

Altri suggerimenti

Si suppone Questa linea di lavoro:

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

Secondo le questa linea attiva l'evento di modifica di ogni elemento corrispondente.

Se non funziona per voi, allora c'è un problema nel codice da qualche parte. Puoi attivare l'evento onchange modificando nell'elemento modulo a mano?

È anche possibile fare:

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

O nel vostro contesto:

$(opener.document.formelement).fireEvent('onchange');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top