fabiapo Postado Julho 24, 2009 Denunciar Share Postado Julho 24, 2009 Pessoal,Alguém sabe como chamar um evento change que está em jquery na página pai a partir de um popup (página filha) em javascript?Tentei da seguinte forma:Página filha (POPUP)window.opener.document.getElementById("cmb_Uf").onchange; Página Pai (em jquery) $("#cmb_Uf").change( function(){ var val_uf = $("#cmb_Uf").val(); var val_municipio = $("#hdn_Municipio").val(); $.post('/fapsl/includes/combo/cmb_municipio.php',{uf: val_uf, municipio: val_municipio}); } );Teoricamente estaria correto, mas no FF 2.0.0.11 não está funcionando mas também não apresenta nenhuma mensagem de erro.Alguém poderia me ajudar?Obrigada! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 24, 2009 Denunciar Share Postado Julho 24, 2009 Tente assim:window.opener.document.getElementById("cmb_Uf").onchange()Faltou o parêntesis para indicar que você está chamando a função Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fabiapo Postado Julho 27, 2009 Autor Denunciar Share Postado Julho 27, 2009 Então, eu tentei desta forma, mas o firefox (console de erros) me retorna a seguinte mensagem:Erro: window.opener.document.getElementById("cmb_Uf").onchange is not a functionTentei chamar uma função na minha página que chamasse o evento change, mas por algum motivo, o meu combo não é populado apesar dos valores para que ele possa ser populado estão ok.Exemplo:POPUP:function cap_valores(id_cep, int_cod_cep, str_endereco, str_bairro, int_cod_municipio, str_municipio, int_cod_uf, str_uf, dt_cep_inclusao, dt_cep_alteracao, nm_usuario_inclusao, nm_usuario_alteracao, id_usuario_inclusao, id_usuario_alteracao) { var str_municipio = int_cod_municipio + "_" + str_municipio; var str_uf = int_cod_uf + "_" + str_uf; window.opener.document.getElementById("txt_CodigoCep").value=int_cod_cep; window.opener.document.getElementById("txt_Endereco").value=str_endereco; window.opener.document.getElementById("txt_Bairro").value=str_bairro; window.opener.document.getElementById("cmb_Uf").value =str_uf; window.opener.document.getElementById("hdn_Municipio").value=str_municipio; window.opener.document.getElementById("cmb_Municipio").value=str_municipio; window.opener.PreencheMunicipio(); window.opener.document.getElementById("hdn_acao").value="alt"; window.opener.document.getElementById("txt_id_cep").value=id_cep; window.opener.document.getElementById("txt_nm_usuario_inclusao").value=nm_usuario_inclusao; window.opener.document.getElementById("txt_dt_cep_inclusao").value=dt_cep_inclusao; window.opener.document.getElementById("txt_nm_usuario_alteracao").value=nm_usuario_alteracao; window.opener.document.getElementById("txt_dt_cep_alteracao").value=dt_cep_alteracao; window.close(); } Página pai: window.PreencheMunicipio = function() { $("#cmb_Uf").change(); } //Ao mudar o combo de UF, popular $("#cmb_Uf").change( function(){ var val_uf = $("#cmb_Uf").val(); var val_municipio = $("#hdn_Municipio").val(); if ((val_uf!='')) { $.post('/fapsl/includes/combo/cmb_municipio.php',{uf: val_uf, municipio: val_municipio}, function(resposta) { $("#cmb_Municipio").html(resposta); if (val_uf !='') { $("#cmb_Uf").valid(); } } ); } } );Se efetuarmos a consulta sem o popup, ele retorna normalmente, via popup não chama a função change. Pelo que percebi os valores se perdem dentro do meu php.Alguém já viu um problema parecido?Obrigada! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 27, 2009 Denunciar Share Postado Julho 27, 2009 Esse código informa que o evento não foi definidoOnde você atribuiu o evento à função ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fabiapo Postado Julho 28, 2009 Autor Denunciar Share Postado Julho 28, 2009 Jonathan,Quando chamo a função PreencheMunicipio na página pai, eu chamo a função change do código UF de forma que possa ser chamada a função post.Meu sistema funciona assim:Quando eu identifico um único registro na base, eu o trago e não abro popup.Se tiver mais que um, abro o popup para que o usuário selecione um link. Neste link coloquei na função onclick a função cap_valores.:Segue o código do popup onde chamo meu evento:$str_parametros=$id_cep.',"'.$nr_cep.'",'.'"'.$nm_logradouro.'",'.'"'.$nm_bairro.'",'.'"'.$id_municipio.'",'.'"'.$nm_municipio.'",'.'"'.$id_uf.'",'.'"'.$nm_uf.'","'.$dt_cep_inclusao.'","'.$dt_cep_alteracao.'","'.$nm_usuario_inclusao.'","'.$nm_usuario_alteracao.'","'.$id_usuario_inclusao.'","'.$id_usuario_alteracao.'"'; echo "<tr>"; echo "<td>"; echo "<a href='' OnClick='cap_valores($str_parametros)' id='sigla_ug'>"; echo $nr_cep; echo "</a>"; echo "</td>"; O que é estranho é que dei um alert no evento change da página pai quando seleciono um item e os valores são repassados para os campos, mas quando chega na função $.post do jquery ele pára de funcionar. Mas isto só funciona quando tenho o popup, sem o popup o evento change funciona perfeitamente. Dou um alert antes de fechar o popup, depois ele fecha e não funciona o $.post. Será que tem algo a ver? Segue o script do popup: cap_valores(id_cep, int_cod_cep, str_endereco, str_bairro, int_cod_municipio, str_municipio, int_cod_uf, str_uf, dt_cep_inclusao, dt_cep_alteracao, nm_usuario_inclusao, nm_usuario_alteracao, id_usuario_inclusao, id_usuario_alteracao) { var str_municipio = int_cod_municipio + "_" + str_municipio; var str_uf = int_cod_uf + "_" + str_uf; window.opener.document.getElementById("hdn_acao").value="alt"; window.opener.document.getElementById("txt_CodigoCep").value=int_cod_cep; window.opener.document.getElementById("txt_Endereco").value=str_endereco; window.opener.document.getElementById("hdn_Municipio").value=str_municipio; window.opener.document.getElementById("txt_Bairro").value=str_bairro; window.opener.document.getElementById("cmb_Uf").value =str_uf; ; //$(opener.document.cmb_Uf).change(); window.opener.PreencheMunicipio(); window.opener.document.getElementById("txt_id_cep").value=id_cep; window.opener.document.getElementById("txt_nm_usuario_inclusao").value=nm_usuario_inclusao; window.opener.document.getElementById("txt_dt_cep_inclusao").value=dt_cep_inclusao; window.opener.document.getElementById("txt_nm_usuario_alteracao").value=nm_usuario_alteracao; window.opener.document.getElementById("txt_dt_cep_alteracao").value=dt_cep_alteracao; window.close(); } function fecha() // esta função está no evento unload da página popup { var acao=window.opener.document.getElementById("hdn_acao").value; if (acao=='con') { window.opener.document.getElementById("hdn_acao").value = 'inc'; } }Obrigada! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 28, 2009 Denunciar Share Postado Julho 28, 2009 Mas o evento onchange do cmb_Uf não foi definida... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fabiapo Postado Julho 29, 2009 Autor Denunciar Share Postado Julho 29, 2009 Foi definida via jquery:$("#cmb_Uf").changena página pai.Não estou mais chamando o evento onchange no popup. Só estou chamando a função PreencheMunicipio() que chama a função $("#cmb_Uf").change.Dei alert para verificar se os valores estavam chegando, chegaram, e mesmo assim quando chega na função $.post, os valores chegam em branco. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fabiapo Postado Julho 29, 2009 Autor Denunciar Share Postado Julho 29, 2009 Segue o meu código completo para você entender:HTML página pai:<form action="<? echo $path_modulos_cmdb_html; ?>/tab_gerais/cep/cad_cep_bd.php" method="post" id="EnviaForm" name="EnviaForm"> <table class="bordasimples" style="width:100%"> <tr> <td colspan="5"></td> </tr> <tr> <td width="13%"></td> <td width="20%" colspan="4">Código CEP:<br> <input type="text" name="txt_CodigoCep" id="txt_CodigoCep" maxlength="9" size="9" tabindex="1" alt="Pressione F9 ou clique na lupa para consultar" title="Pressione F9 ou clique na lupa para consultar"> <input type="image" tabindex="2" name="BuscaCep" id="BuscaCep" src="<? echo $path_img_html;?>/lupa.jpg" class="lupa" alt="Pressione F9 ou clique na lupa para consultar" title="Pressione F9 ou clique na lupa para consultar"/> </td> </tr> <tr> <td width="13%"></td> <td colspan="4">Endereço:<br> <input type="text" name="txt_Endereco" id="txt_Endereco" maxlength="100" size="60" tabindex="2"><br> </td> </tr> <tr> <td width="13%"></td> <td colspan="4">Bairro:<br> <input type="text" name="txt_Bairro" id="txt_Bairro" maxlength="70" size="50" tabindex="3"> </td> </tr> <tr> <td width="13%"></td> <td width="22%" colspan="2">UF:<br> <select name="cmb_Uf" id="cmb_Uf" tabindex="4"> <? //popula o combo com as UFs include "$path_includes_combo/cmb_uf.php"; ?> </select> </td> <td width="40%">Município:<br> <select name="cmb_Municipio" id="cmb_Municipio" tabindex="5"> <option value=''>Selecione</option> <? //populado via arquivo form_busca_cep.php ?> </select> <input type="hidden" name="hdn_Municipio" id="hdn_Municipio"/> </td> <td width="13%"></td> </tr> <tr> <td colspan="5"> <input type="hidden" name="hdn_acao" id="hdn_acao"> </td> </tr> </table> <table class="bordasimples" style="width:90%"> <tr> <td colspan="7"></td> </tr> <tr> <td width="25%"></td> <td width="14%">Identificador:<br><input type="text" id="txt_id_cep" name="txt_id_cep" class="disabled" disabled></td> <td width="8%"></td> <td width="18%"></td> <td ></td> <td width="7%"></td> </tr> <tr> <td></td> <td>Criado Por:<br><input type="text" id="txt_nm_usuario_inclusao" name="txt_nm_usuario_inclusao" class="disabled" disabled></td> <td></td> <td>Data de Criação:<br><input type="text" id="txt_dt_cep_inclusao" name="txt_dt_cep_inclusao" class="disabled" disabled></td> <td></td> </tr> <tr> <td></td> <td>Modificado Por:<br><input type="text" id="txt_nm_usuario_alteracao" name="txt_nm_usuario_alteracao" class="disabled" disabled></td> <td></td> <td>Data de Modificação:<br><input type="text" id="txt_dt_cep_alteracao" name="txt_dt_cep_alteracao" class="disabled" disabled></td> <td><br></td> </tr> <tr> <td colspan="5"></td> </tr> </table> </form> Script da página pai: window.PreencheMunicipio = function() { var val_uf = $(this).find(':selected').val(); var val_municipio = $("#hdn_Municipio").val(); //$("#cmb_Municipio").load('/fapsl/includes/combo/cmb_municipio.php?uf='+val_uf+'&municipio'); $("#cmb_Uf").change(); } //Ao mudar o combo de UF, popular $("#cmb_Uf").change( function(){ var val_uf = $(this).find(':selected').val(); var val_municipio = $("#hdn_Municipio").val(); $.post('/fapsl/includes/combo/cmb_municipio.php',{uf: val_uf, municipio: val_municipio}, function(resposta) { $("#cmb_Municipio").html(resposta); if (val_uf !='') { $("#cmb_Uf").valid(); } } ); } ); //Validar após selecionar registro $("#cmb_Municipio").change( function() { $("#cmb_Municipio").valid(); } ); HTML da página filha: popup <? session_start(); ob_start(); include "/var/www/fapsl/path.php"; include "$path_includes/conecta_bd.inc"; include_once "$path_includes/includePerdeSessao.php"; ?> <html> <head> <title>Consulta de CEPs</title> <script type="text/javascript" src="<? echo $path_jquery_html; ?>/jquery.js"></script> <script type="text/javascript" src="<? echo $path_jquery_html; ?>/jquery.alerts.js"></script> <script type="text/javascript" src="<? echo $path_jquery_html; ?>/jquery.tablesorter.js"></script> <script type="text/javascript" src="<? echo $path_modulos_html; ?>/script/form_ordenar.js"></script> <link rel="stylesheet" type="text/css" href="<? echo $path_css_html;?>/tabelas.css" /> <link rel="stylesheet" type="text/css" href="<? echo $path_css_html; ?>/jquery.alerts.css" /> </head> <body onUnload="java script:fecha();"> <div align="center"> <table class="tablesorter" width="80%" id="sort"> <? $num_cep=str_replace("-","",$_REQUEST["cep"]); $query="SELECT * FROM consulta_cep('$num_cep')"; $rs=pg_query($dbconn,$query); if ($rs) { if (pg_num_rows($rs)<>0) { ?> <thead> <tr> <th width="18%">Código CEP<img src="<? echo $path_img_html?>/setas_ordenacao.gif"/></th> <th>Endereço<img src="<? echo $path_img_html?>/setas_ordenacao.gif"/></th> <th width="20%">Bairro<img src="<? echo $path_img_html?>/setas_ordenacao.gif"/></th> <th width="20%">Municipio<img src="<? echo $path_img_html?>/setas_ordenacao.gif"/></th> <th width="8%">UF<img src="<? echo $path_img_html?>/setas_ordenacao.gif"/></th> </tr> </thead> <tbody> <? for($i=0; $i<pg_num_rows($rs); $i++) { $rs_fetch = pg_fetch_row($rs); $nr_cep=$rs_fetch[0]; $nr_cep_parte1 = substr($nr_cep, 0, 5); $nr_cep_parte2 = substr($nr_cep, 4, 3); $nr_cep = $nr_cep_parte1."-".$nr_cep_parte2; $id_cep=$rs_fetch[1]; $nm_logradouro=$rs_fetch[2]; $nm_bairro = $rs_fetch[3]; $id_municipio = $rs_fetch[4]; $nm_municipio = $rs_fetch[5]; $id_uf = $rs_fetch[6]; $nm_uf = $rs_fetch[7]; $dt_cep_inclusao=$rs_fetch[8]; $str_time=strtotime($dt_cep_inclusao); if (date(Y,$str_time)!='1969') $dt_cep_inclusao=date("d/m/Y G:i:s", $str_time); else { $dt_cep_inclusao=''; } $dt_cep_alteracao=$rs_fetch[9]; $str_time=strtotime($dt_cep_alteracao); if (date(Y,$str_time)!='1969') $dt_cep_alteracao=date("d/m/Y G:i:s", $str_time); else { $dt_cep_alteracao=''; } $nm_usuario_inclusao=$rs_fetch[10]; $nm_usuario_alteracao=$rs_fetch[11]; $id_usuario_inclusao=$rs_fetch[12]; $id_usuario_alteracao=$rs_fetch[13]; $str_parametros=$id_cep.',"'.$nr_cep.'",'.'"'.$nm_logradouro.'",'.'"'.$nm_bairro.'",'.'"'.$id_municipio.'",'.'"'.$nm_municipio.'",'.'"'.$id_uf.'",'.'"'.$nm_uf.'","'.$dt_cep_inclusao.'","'.$dt_cep_alteracao.'","'.$nm_usuario_inclusao.'","'.$nm_usuario_alteracao.'","'.$id_usuario_inclusao.'","'.$id_usuario_alteracao.'"'; echo "<tr>"; echo "<td>"; echo "<a href='' OnClick='cap_valores($str_parametros)' id='sigla_ug'>"; echo $nr_cep; echo "</a>"; echo "</td>"; echo "<td>"; echo $nm_logradouro; echo "</td>"; echo "<td>"; echo $nm_bairro; echo "</td>"; echo "<td>"; echo $nm_municipio; echo "</td>"; echo "<td>"; echo $nm_uf; echo "</td>"; echo "</tr>"; } } else { if(pg_num_rows($rs)==0) { $str_mensagem="A Consulta não trouxe registros"; $str_erro="Não há registros semelhantes na base"; echo "<script type='text/JavaScript'>"; echo "$(document).ready( function() {"; echo 'jAlert("'.$str_erro.'","'.$str_mensagem.'", function(resposta){ if (resposta==true) { window.close(); } });'; echo "}); </script>"; } } } else { $str_mensagem="Ocorreu um erro na consulta dos dados."; $str_erro = pg_last_error($dbconn); $str_erro = str_replace("'","",$str_erro); $str_erro = str_replace("\n","",$str_erro); echo "<script type='text/JavaScript'>"; echo "$(document).ready( function() {"; echo 'jAlert("'.$str_erro.'","'.$str_mensagem.'", function(resposta){ if (resposta==true) { window.close(); } });'; echo "}); </script>"; } ?> </tbody> </table> </div> </body> </html> Script da Página filha: popup function cap_valores(id_cep, int_cod_cep, str_endereco, str_bairro, int_cod_municipio, str_municipio, int_cod_uf, str_uf, dt_cep_inclusao, dt_cep_alteracao, nm_usuario_inclusao, nm_usuario_alteracao, id_usuario_inclusao, id_usuario_alteracao) { var str_municipio = int_cod_municipio + "_" + str_municipio; var str_uf = int_cod_uf + "_" + str_uf; window.opener.document.getElementById("hdn_acao").value="alt"; window.opener.document.getElementById("txt_CodigoCep").value=int_cod_cep; window.opener.document.getElementById("txt_Endereco").value=str_endereco; window.opener.document.getElementById("hdn_Municipio").value=str_municipio; window.opener.document.getElementById("txt_Bairro").value=str_bairro; window.opener.document.getElementById("cmb_Uf").value =str_uf; window.opener.PreencheMunicipio(); window.opener.document.getElementById("txt_id_cep").value=id_cep; window.opener.document.getElementById("txt_nm_usuario_inclusao").value=nm_usuario_inclusao; window.opener.document.getElementById("txt_dt_cep_inclusao").value=dt_cep_inclusao; window.opener.document.getElementById("txt_nm_usuario_alteracao").value=nm_usuario_alteracao; window.opener.document.getElementById("txt_dt_cep_alteracao").value=dt_cep_alteracao; window.close(); } function fecha() { var acao=window.opener.document.getElementById("hdn_acao").value; if (acao=='con') { window.opener.document.getElementById("hdn_acao").value = 'inc'; } }Muito obrigada! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fabiapo Postado Julho 30, 2009 Autor Denunciar Share Postado Julho 30, 2009 Engraçado é que este código funciona no FF 3 e no IE 7, mas estou com problemas no FF 2.Existe algum paleativo para funcionar nos 2 browsers?Obrigada! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
fabiapo
Pessoal,
Alguém sabe como chamar um evento change que está em jquery na página pai a partir de um popup (página filha) em javascript?
Tentei da seguinte forma:
Página filha (POPUP)
window.opener.document.getElementById("cmb_Uf").onchange;Página Pai (em jquery)$("#cmb_Uf").change( function(){ var val_uf = $("#cmb_Uf").val(); var val_municipio = $("#hdn_Municipio").val(); $.post('/fapsl/includes/combo/cmb_municipio.php',{uf: val_uf, municipio: val_municipio}); } );Teoricamente estaria correto, mas no FF 2.0.0.11 não está funcionando mas também não apresenta nenhuma mensagem de erro.
Alguém poderia me ajudar?
Obrigada!
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.