Jump to content

Traer datos desde popup a Ventana padre(Solucionado)


Recommended Posts

Estimados amigos, para variar yo.... Quisiera saber si ustedes saben como traer datos desde una ventana popup hacia un formulario que esta en la pagina "padre". Lo que pasa es que tengo un popup que al abrirse muestra un listado con paises, y quiero que al hacer click en el link del pais (eso ya lo se hacer) me actualice unos campos en el formulario que tengo en la pagina "padre" desde donde se abrió el popup. No se si me entienden. Muchas gracias por todo. :nose:

Edited by buinense
Link to comment
Share on other sites

En el popup, antes de cerrar o al hacer click, tienes que usar:

window.opener

 

Por ejemplo, en la página "padre"

  <script language=asdf...>
    function completarDatos(cod_pais){
      document.getElementById(asdf).value = cod_pais;
     o puedes llamar un método ajax para actualizar la página principal
    }
  </script>
</head>
<form asdf>
  <input type="hidden" id="cod_pais" name="cod_pais" value="" />
</form>

 

en el popup

  window.opener.form1.cod_pais.value=document.getElementById('cod_pais').value;
o puedes llamar a la función
window.opener.completarDatos(document.getElementById('cod_pais').value);

 

No sé si me explico con esos pedacitos de código...

 

Salu2.

Link to comment
Share on other sites

En el popup, antes de cerrar o al hacer click, tienes que usar:

window.opener

 

Por ejemplo, en la página "padre"

  <script language=asdf...>
    function completarDatos(cod_pais){
      document.getElementById(asdf).value = cod_pais;
     o puedes llamar un método ajax para actualizar la página principal
    }
  </script>
</head>
<form asdf>
  <input type="hidden" id="cod_pais" name="cod_pais" value="" />
</form>

 

en el popup

  window.opener.form1.cod_pais.value=document.getElementById('cod_pais').value;
o puedes llamar a la función
window.opener.completarDatos(document.getElementById('cod_pais').value);

 

No sé si me explico con esos pedacitos de código...

 

Salu2.

 

Gracias, me resulta, pero solo puedo pasar un parametro, el segundo, que es un texto, no me deja pasarlo. Mira este es el codigo:

 

formProveed (que es la ventana padre):

<tr>
<td class="blanco">Pais</td>
<td><input type="hidden" maxlength="4" name="pais" size="4"/><input type="text" name="nomP" /><input type="image" src="../images/Find20x20.png" onclick="window.open('selectPaises.php','paises','width=300 height=200');" />
</td>
</tr>

El popUp me abre sin problemas, y si le paso un solo parametro, o sea, el ID del pais lo entrega y actualiza el campo tipo text del formulario padre, que se llama pais(de hecho lo tengo oculto en este momento, pero si lo muestro aparece). En cambio, al dos parametros, no me entrega ninguno de los dos, paisID ni paisNombre... aqui el codigo del popUp:


Funcion que entrega los valores
<script language="javascript">

function entregar(id,nombre){
    window.parent.document.formulario.pais.value = id;
    window.opener.document.formulario.nomP.value = nombre;
    window.close();
}
</script>


Codigo php en donde tengo el link que llama a la funcion y le traspasa los parametros, el cual está en Negrita:
while($row = mysql_fetch_array($query)){
            $flag = 1;
            echo "<tr>";
            echo "<td class='blanco'>".$row['paisID']."</td>";
            echo "<td class='blanco'>".$row['paisNombre']."</td>";
            [b]echo "<td class='blanco' align='center'><a href='#' onclick='entregar(".$row['paisID'].",".$row['paisNombre']."); return false'><img src='../images/Download20x20.png' align='middle' border='0'/></a></td>";[/b]
            echo "</tr>";
        }
        echo "<tr><td colspan='5' align='right' class='blanco'>Total Registros: ".$num."</td></tr>";
        echo "</table>";
    }else{
        echo "<h3 style=' color:#FF0000'>Pais no encontrado</h3>";
    }

 

Gracias.

 

Link to comment
Share on other sites

Ahí está el error:

window.parent.document.formulario.pais.value = id;

window.opener.document.formulario.nomP.value = nombre;

 

Salu2.

No, igual, los dejo ambos con parent o ambos con opener y tampoco resulta, de hecho el erro que me arroja es por el nombre del pais: 'Chile' no está definido....

Link to comment
Share on other sites

Esto me funcionó en Firefox e IE

 

Padre:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="javascript" type="text/javascript">
function datos(val1, val2){
    document.getElementById('valor1').value = val1;
    document.getElementById('valor2').value = val2;
}
</script>
</head>
<body>
<form name="form1">
<input type="text" name="valor1" id="valor1" value="" /><br />
<input type="text" name="valor2" id="valor2" value="" /><br />
<input type="button" name="ventana" onClick="java script: window.open('ventana.html');" />
</form>

</body>
</html>

 

Hijo (popup):

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="javascript" type="text/javascript">
function pasar(){
    window.opener.datos(document.getElementById('datos1').value, document.getElementById('datos2').value);
}
</script>
</head>
<body>
<form name="formu">

<input type="text" name="datos1" id="datos1" value="" / >
<input type="text" name="datos2" id="datos2" value="" / >

</form>
<a href="#" title="pasar valor" onClick="java script: pasar();" >Pasar valor a ventana padre</a>

</body>
</html>

 

Salu2 y cuenta cómo te va...

Link to comment
Share on other sites

Pero eso hay que hacerlo con formulario?, no con una tabla?

De hecho, probé y solo me da problemas los parametros tipo texto, con los tipo numero los entrega sin ningun problema...

Sabes de casualidad si hay problemas para pasar texto por javascript?

Edited by buinense
Link to comment
Share on other sites

:blink: :loco:

 

No te caché la pregunta... :tonto:

 

Dentro del form puedes hacer lo que quieras... por ejemplo una tabla...

 

O al revés... dentro de la tabla, puedes hacer un form... aunque creo que no se acostumbra...

 

 

Salu2.

Link to comment
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...