Raise “onChange” evento quando elemento de entrada alterados por JavaScript de janela pop-up
-
21-08-2019 - |
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.
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');