Jump to content
Icepick.pt

Referenciação de um campo em janela-filha, a partir da janela-mãe

Recommended Posts

Icepick.pt

Tenho uma janela-mae que abre uma janela-filha, e preciso que essa janela-filha tenha alguns campos preenchidos previamente quando é aberta. O utilizador altera-os posteriormente se quiser.

Poderia realizar isto com PHP, mas por motivos que se prendem com a funcionalidade do código da janela-filha, preferia que isso fosse feito com javascript a partir da janela-mãe, ou seja: a janela-mãe pede a abertura da janela-filha, e preenche-a com os dados que precisa.

O problema que tenho está na referenciação que estou a fazer à janela filha, em javascript. Simplesmente não consigo fazê-la funcionar, há qualquer coisa que me está a escapar e é apenas um problema de sintaxe na referenciação.

Eis o código da janela-mãe:

<input type='text' name='short_ref' ' id='short_ref' 
   onchange='
        stocks=window.open(\"child_window.php\",\"stocks\",\"width=600, height=600\");
        var child_form=window.stocks.form_name;
        child_form.document.getElementById(\"destination_field_name\").value=\"whatever\";' >

Alguém me corrige aqui esta linha, por favor ?

Share this post


Link to post
Share on other sites
brunoais

1º E mais importante que simplesmente funcionar:

Separa o javascript do HTML.

Usa um acesso ao node (getElementById() ou parecido) e usa o addEventListener ou o atributo onchange.

Esse código é demasiado complicado e tem demasiado para detetar o erro sem saber o erro que o compilador indica (se existir um).


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Icepick.pt

Bom, o código javascript está separado, mas aqui vai ...


<head>
function preencher_campo() {
        // Abre a janela
        stocks=window.open(\"child_window.php\",\"stocks\",\"width=600, height=600\");
        // atribui a form a uma variável
        var child_form=window.stocks.form_name;
        // preenche o campo pretendido na janela-filha
        child_form.document.getElementById(\"destination_field_name\").value=\"whatever\";
        }
</head>
<body>
<input type='text' name='short_ref' ' id='short_ref' onchange='preencher_campo();'>
</body>

Como é que eu posso saber o erro que existe? Só consigo saber que não funciona. Onde é que encontro as mensagens de erro?

Share this post


Link to post
Share on other sites
brunoais

Bom, o código javascript está separado, mas aqui vai ...


<head>
function preencher_campo() {
        // Abre a janela
        stocks=window.open(\"child_window.php\",\"stocks\",\"width=600, height=600\");
        // atribui a form a uma variável
        var child_form=window.stocks.form_name;
        // preenche o campo pretendido na janela-filha
        child_form.document.getElementById(\"destination_field_name\").value=\"whatever\";
        }
</head>
<body>
<input type='text' name='short_ref' ' id='short_ref' onchange='preencher_campo();'>
</body>

Como é que eu posso saber o erro que existe? Só consigo saber que não funciona. Onde é que encontro as mensagens de erro?

<head>
<script type="text/javascript">
function preencher_campo() {
        // Abre a janela
        var stocks=window.open("child_window.php","stocks","width=600, height=600");
        // atribui a form a uma variável
        //var child_form=window.stocks.form_name;
        // preenche o campo pretendido na janela-filha
        stocks.document.getElementById("destination_field_name").value="whatever";
}
</script>
</head>
<body>
<input type='text' name='short_ref' ' id='short_ref' onchange='preencher_campo();'>
</body>

Corrigii:

  • Falta as tags script e um pouco de limpeza (remoção dos \).
  • Falta um var
  • Comentei código inútil

Agora. tenta outra vez e se n der indica qual é o erro.

Se não percebeste algo avisa e indica o que não percebes que eu (ou outro membro da comunidade) explico.

O encontrar as mensagens de erro depende do browser que usas. Cada browser tem a sua maneira.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.