Foros del Web » Programando para Internet » Javascript »

cambiar la url desde un pop-up

Estas en el tema de cambiar la url desde un pop-up en el foro de Javascript en Foros del Web. hola gente como estan??? bueno he estado leyendo y buscando y todavia no encuentro la solucion en concrecto tengo una ventana en la cual muestro ...
  #1 (permalink)  
Antiguo 20/09/2005, 14:57
 
Fecha de Ingreso: junio-2004
Mensajes: 158
Antigüedad: 19 años, 10 meses
Puntos: 1
cambiar la url desde un pop-up

hola gente como estan???
bueno he estado leyendo y buscando y todavia no encuentro la solucion

en concrecto tengo una ventana en la cual muestro los item de una base de datos.
en esta tengo definida la opcion de cambiar uno en particular.
ahora cuando el usuario quiere cambiar un articulo al hacer click en este se abre un pop-up en el cual tengo un form.
el problema esta cuando yo pongo los nuevos datos en el form del pop-up y activo el button el formulario llama nuevamente la pagina.
en esta chequeo que tengo los datos y pasar a la ventana padre una nueva url por la cual proceso los cambios y no lo consigo la url que paso la recibe el propio pop-up
supongo que el opener cuando activo el button pasa a ser el mismo pop-up
entonces puedo guardar en una variable el opener y lo paso por el form podria pasarle la url a este???

en concreto quiero pasar de un pop-up una url a la wnd padre usando un form
Muchas gracias por la ayuda
Saludos
Javier

wnd padre:
<script language="javascript">
function cambiarurl(url){
document.location=url ;
}

function NewWindow(mypage,myname,w,h,scroll){
LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
settings =
'height='+h+',width='+w+',top='+TopPosition+',left ='+LeftPosition+',scrollbars='+scroll+',resizable'
win = window.open(mypage,myname,settings)
}
....

<a href="cambiaritem.php?id=001" onclick="NewWindow(this.href,'name','400','300','y es');return false">cambiar datos</a>

el popup.php
if (isset($_GET['action']) and ($_GET['action']=="cambiardatos")) {
$link='urlwndpadres?action=cambiardatos&articulo=' .$_GET['articulo'].'&tipo='.$_GET['tipo'].'&precio='.$_GET['precio'];
echo '<SCRIPT LANGUAGE="JavaScript">
opener.cambiarurl('.$link.');
setTimeout("window.close();", 3000 );
</script>';
}
else {
echo '<form name="myform" action="'.$PHP_SELF.'?action=cambiardatos" method="post">
<table width="352" border="0" cellspacing="0" cellpadding="5" align="center" style="border: 1px solid #CCC">
<tr>
<td width="300" height="26"><div align="center">descripcion...</div></td>
<td width="100" height="26"><input name="articulo" type="text" style="width: 100%;" value="'.$articulo.'" />
</td>
</tr>
<tr>
<td width="300" height="26"><div align="center">Tipo</td>
<td width="100" height="26"><input type="text" name="tipo" value="'.$tipo.'" style="width: 100%;" />
</td>
</tr>
<tr>
<td width="300" height="38">Precio
</td>
<td width="100" height="26"><input name="precio" type="text" style="width: 100%;" value="'.$precio.'" />
</td>
<tr>
<td width="300" height="27">
</td>
<td width="100" height="27">
<input type="submit" class="botones" value="Grabar"></td></tr>
</table>
</form>';
}
  #2 (permalink)  
Antiguo 20/09/2005, 15:43
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
podrias crear solo una funcion en el popup, con lo que creo que te ahorrarias codigo:

<script>
function funcion()
{
document.form.myform.submit();
opener.focus();
setTimeout("opener.location.href='nueva direccion';window.close();", 3000 );
}


<input type="button" class="botones" value="Grabar" onclick="funcion()">

La verdad no se si va a funcionar.
  #3 (permalink)  
Antiguo 21/09/2005, 08:56
 
Fecha de Ingreso: junio-2004
Mensajes: 158
Antigüedad: 19 años, 10 meses
Puntos: 1
gracias master que fenomeno lo pruebo mañana y te cuento
chagracias
Javier
  #4 (permalink)  
Antiguo 21/09/2005, 09:12
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Sólo un par de apuntes...

Tanto se puede enviar un formulario a un popup como al padre de un popup... tan solo hay que definir el target, y puede ser el que coincida con el "window.name" del "opener" (se supone que lo tendrías que controlar)

El segundo aporte es sobre la forma de abrir un enlace a un popup... se trata de una especie de batalla particular en contra de poner return false en los enlaces... pienso que debe usarse solo en validaciones, por lo que creo mejor usa esto:

<a href="cambiaritem.php?id=001" onclick="NewWindow('','name','400','300','yes')">c ambiar datos</a>

en vez de esto:

<a href="cambiaritem.php?id=001" onclick="NewWindow(this.href,'name','400','300','y es');return false">cambiar datos</a>

Fíjate que lo que propongo es abrir una página en blanco con el mismo atributo href en el enlace y sin poner return false, que en mi opinión debe usarse solamente en validaciones (no se me ocurre ningún otro caso)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 21/09/2005, 09:24
 
Fecha de Ingreso: junio-2004
Mensajes: 158
Antigüedad: 19 años, 10 meses
Puntos: 1
caricatos master gracias por tu aporte, de este entiendo lo de aplicar el return false, segun me dices solo se aplica enm validaciones, lo que no me quedo claro es porque abrir un pop en blanco y como luego le paso el form para cambiar los datos.
para ello tendria que usar un script el cual le pasare la url al pop-up
en ello no veo las ventajas, si me explicas te lo agradecere.
lo que busco es desde el pop-up cambiar la url de la ventana que lo abrio pasandole en la url los nuevos datos para ser grabados

saludos y gracias
Javier
  #6 (permalink)  
Antiguo 21/09/2005, 09:41
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Bueno, me olvide decir que en las FAQs se habla del tema, pero también me olvidé de poner el target en la modificación del ejemplo...

<a href="cambiaritem.php?id=001" target="name" onclick="NewWindow('','name','400','300','yes')">c ambiar datos</a>

El atributo target en los tags "a", "area" y "form" indican la ventana destino del enlace o formulario...
Y en el método open del objeto window (window.open), el segundo de los parámetros indica el nombre de la ventana...

Verás, la idea es poner ese primer parámetro en blanco (una cadena vacía...""), entonces está preparada para recibir contenidos, ya sea por medio de un script o un enlace y el enlace es lo que hay en el atributo href del tag "a" o "area" o en el action de un formulario...

Usar return false en un enlace desde el evento onclick debería ser lo mismo que desde el evento onsubmit de un formulario... con el único objetivo de cancelarlo...

Lo que te digo lo suelo aplicar y te puedo asegurar que funciona correctamente.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 21/09/2005, 11:33
 
Fecha de Ingreso: junio-2004
Mensajes: 158
Antigüedad: 19 años, 10 meses
Puntos: 1
gracias caricatos por la aclaracion
me confirmas que en las faq's se habla de esto a lo cual me pongo a buscarlo

ahopra si entendi lo de no poner el primer parametro al script ya que este por el target recibe la url.

gracias una vez +
saludos
Javier
  #8 (permalink)  
Antiguo 22/09/2005, 09:20
 
Fecha de Ingreso: junio-2004
Mensajes: 158
Antigüedad: 19 años, 10 meses
Puntos: 1
funciono perfectamente

el script quedo asi:
function pasodatos()
{
link='wndpadre.php?action=cambiardatos&articulo='+ document.myform.articulo.value+'&tipo='+document.m yform.tipo.value+'&precio='+document.myform.precio .value+;
setTimeout("opener.location.href='"+link+"';", 10 );
setTimeout("window.close();", 3000 );
}

y lo llamo asi:
<input type="submit" class="botones" value="Grabar" onclick="pasodatos(); return false;">

el return false es para que no se active el action del form
probado con ie me falta mozilla luego les cuento
saludos y gracias
Javier
  #9 (permalink)  
Antiguo 22/09/2005, 14:41
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
No se los motivos que te mueven a poner el input type submit ,..... type button ,no es nesesario el return false..
  #10 (permalink)  
Antiguo 22/09/2005, 16:40
 
Fecha de Ingreso: junio-2004
Mensajes: 158
Antigüedad: 19 años, 10 meses
Puntos: 1
lo que me motivo es que no quiero que se active la accion del formulario
otro punto importante es que si no pongo el return false en el onclick cuando llamo al pop me da un error de javascript segun me explico caricatos

<a href="cambiaritem.php?id=001" onclick="NewWindow('','name','400','300','yes')">c ambiar datos</a>

tambien en el script tu le dabas el focos a la wndpadre en cuyo caso no se cierra el pop y si se activa la accion del pop ya no se cierra el pop-up
gracias a ambos
saludos
Javier
  #11 (permalink)  
Antiguo 22/09/2005, 17:39
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
declarando el input type="button" en vez de type="submit" el formulario no se activa al pulsarlo ,y no es nesesario poner el return false.
  #12 (permalink)  
Antiguo 22/09/2005, 18:43
 
Fecha de Ingreso: junio-2004
Mensajes: 158
Antigüedad: 19 años, 10 meses
Puntos: 1
gracias programeitor tiene razon sigo aprendiendo
saludos
Javier
  #13 (permalink)  
Antiguo 23/09/2005, 12:57
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
de nada jadi, siento repetirme pero es que te lo dije antes, y no parecia que lo hubieses entendido. por eso he vuelto a ponerlo, acepta mis disculpas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 23:50.