Raise “onChange” evento quando elemento de entrada alterados por JavaScript de janela pop-up

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

Pergunta

Eu tenho uma página com um elemento de formulário e uma janela pop-up (aberta pelo window.open).

Ambos têm jQuery disponível.

A janela pop-up tem um javascript que pode mudar o elemento de formulário na janela de abertura. Que funciona perfeitamente, fazendo ...

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

No entanto, fazendo que o evento onChange não dispara. Que seria exigido por alguns outros elementos da página, no entanto. Então, eu tentei acionar o evento onChange-me com

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

Mas isso não faz nada.

Alguma dica? Eu definitivamente tenho que ter esse evento onChange demitido devido à arquitetura de outros elementos da página.

Esta questão é semelhante ao evento Chamada Javascript onchange por programaticamente alterando o valor caixa de texto , mas as soluções sugeridas a partir dessa questão não parecem trabalhar para mim. Talvez seja por causa do pop-up.

Foi útil?

Solução

Talvez a sua cruz-janela que está machucando você ... Tente fazer uma função dentro de abridor que você chama em seu lugar. Pode ajudar?

Na abertura:

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

De popup:

opener.changeMyElement(value);

Outras dicas

Esta linha é suposto trabalho:

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

De acordo com a documentação do jQuery Isso desencadeia linha o evento de alteração de cada elemento combinado.

Se ele não está funcionando para você, então há um problema em seu lugar código. você pode disparar o evento onchange mudando no elemento de formulário à mão?

Você também pode fazer:

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

Ou no seu contexto:

$(opener.document.formelement).fireEvent('onchange');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top