Foros del Web » Programando para Internet » Javascript »

necesito entender opener.location.reload()

Estas en el tema de necesito entender opener.location.reload() en el foro de Javascript en Foros del Web. Hola señores: estoy en la necesidad de actualizar los datos de una ventana desde otra ventana. buscando, en este foro encontré lo siguiente "opener.location.reload();" pero ...
  #1 (permalink)  
Antiguo 03/03/2005, 16:45
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
necesito entender opener.location.reload()

Hola señores: estoy en la necesidad de actualizar los datos de una ventana desde otra ventana. buscando, en este foro encontré lo siguiente "opener.location.reload();" pero no se aque se refiere,

mi situacion es la siguiene: estoy llenando un formulario y para llenar el campo fecha llamo un calendario que se muestra en la parte inferior derecha de la pantalla

<input type="text" name="txtfecha" size="20" maxlength="10" value="<%= mes &"/"& dia &"/"& ano %>"> <A HREF="javascript:popUp('calendar.asp')"> <img border="0" src="recent.gif" > </a>

el problema esta en que al escoger la fecha (del calendario), se debe regresar al formulario donde estaba capturando los datos, pero no, este se queda en la misma pantalla de calendario.

Como hago para que una vez escoja la fecha se regrese al formulario (llevando los datos de la fecha) ?

les agradezco mucho si me colaboran.
  #2 (permalink)  
Antiguo 03/03/2005, 17:05
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, vpino
Sería algo así:
en la página calendar.asp debes asignar el resultado fecha al campo del formulario de la página que la abrió ("opener") y luego, supongo, cerrar la ventana pop-up. No uses un reload() que puede que te borre el formulario.
Pon esto en calendar.asp:
Código PHP:
opener.document.nombreDelFormulario.txtfecha.value="valorelegido"
window.close() 
Sustituyendo, obviamente, "nombreDelFormulario" y "valorelegido" por los datos adecuados a tu caso
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 04/03/2005, 09:01
Avatar de kova  
Fecha de Ingreso: marzo-2003
Mensajes: 79
Antigüedad: 21 años, 1 mes
Puntos: 0
No se como tomaras el valor de la fecha deseada en el formulario que abre el popup, pero otra posibilidad es enviarselo por get de la siguiente manera:

opener.location = 'nombredelapagina.asp?fecha=fechaseleccionada';
window.close();

Esto no solo te permitiría enviarle el valor al formulario padre, sino tambien refrescarlo por si necesitas cambiar la información que se muestra.

Si te parece mejor la opción que te envía angsanchez por si no querés usar GET, y necesitas refrescar la información del padre podrías agregar lo siguiente:

opener.document.nombreDelFormulario.txtfecha.value ="valorelegido"
opener.document.forms["Form1"].submit();
window.close()

Siendo Form1 el formulario que contiene al campo txtfecha

Mucha Suerte!!!
  #4 (permalink)  
Antiguo 04/03/2005, 09:36
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
La verdad, estoy medio perdido con lo de opener.document ....

y por tanto prefiero enviar mas detalladamente mi situacion:

Estoy diligenciando un formulario el cual contiene un campo fecha y para ello hago clic en un boton que me lleva a otro programa que muestra un calendario, del calendario escojo el dia( cada dia es un link) y al escogerlo me devuelve al formulario que estaba diligenciando (mostrandose asi el dia,mes y ano) que se escogio en el calendario.
Hasta ahi, todo va ok. el problema reside en que la pagina del calendario es una ventan pequeña (asi lo quise) y al escoger la fecha me muestra el formulario que estaba diligenciando en esta misma ventana(la ventana del calendario que es pequeña) y yo la necesito en otra ventana(don estaba llenando los datos).
me hago entender? se que es mucho codigo, pero por favaro una ayudita


el codigo del formulario que estoy llenando es:

entre el <head> y </head> tengo
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,men ubar=0,resizable=0,width=270,height=170,left =470,top = 321.5');");
}
// End -->
</script>

luego en el campo fecha tengo
<input type="text" name="txtfecha" size="20" maxlength="10" value="<%= mes &"/"& dia &"/"& ano %>"> <A HREF="javascript:popUp('calendar.asp')"> <img border="0" src="recent.gif" > </a> </td>



y el codigo del calendar.asp es

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="calendario.asp"-->
<html>
<head>
<title>TITULO WEB</title>
<link href="general.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#eeeeee" text="#000000" link="#000000" vlink="#000000" alink="#000000">
<% if Request.Form("Year")<>"" AND Request.Form("Month")<>"" then
Any = CDate(Request.Form("Year"))
Mes = CDate(Request.Form("Month"))
else
Any = year(Now)
Mes = month(Now)
end if
any = Any
mes = Mes
response.write(calendari(any,mes))%>
</body>
</html>


el codigo de calendario.asp es
<%
function calendari(any,mes)
id=session("identificador") 'identificador del formulario
programa=session("programa") 'programa de donde viene

'pagina que recibirá la fecha seleccionada por el usuario
URLDestino =programa

Dim MyMonth 'Month of calendar
Dim MyYear 'Year of calendar
Dim FirstDay 'First day of the month. 1 = Monday
Dim CurrentDay 'Used to print dates in calendar
Dim Col 'Calendar column
Dim Row 'Calendar row

calendari = "" ' Variable que contindra tot el contingut del calendari (Retorn de funcio)
MyMonth = mes
MyYear = any

If IsEmpty(MyMonth) then MyMonth = Month(Date)
if IsEmpty(MyYear) then MyYear = Year(Date)

calendari = ShowHeader(MyMonth, MyYear)

'FirstDay = WeekDay(DateSerial(MyYear, MyMonth, 1)) -1 'Data Anglesa
FirstDay = WeekDay(DateSerial(MyYear, MyMonth, 1)) - 2 'Data Espanyola
CurrentDay = 1


'Let's build the calendar
For Row = 0 to 5
For Col = 0 to 6
If ((Row = 0) and (Col < FirstDay)) then
calendari = calendari & "<td bgcolor='#FFFFFF' class='calSimbolo'>&nbsp;</td>"
elseif (CurrentDay > LastDay(MyMonth, MyYear)) then
calendari = calendari & "<td bgcolor='#FFFFFF' class='calSimbolo'>&nbsp;</td>"
else
if (cInt(MyYear) = Year(Date)) and (cInt(MyMonth) = Month(Date)) and (CurrentDay = Day(Date)) then
calendari = calendari & "<td bgcolor='#FFFFFF' class='calCeldaResaltado' align='center'>"
else
calendari = calendari & "<td bgcolor='#FFFFFF' align='center'>"
end if
calendari = calendari & "<a href='" &URLDestino& "?id= "&id&"&day= "&CurrentDay&"&month= "&cInt(MyMonth)&"&year= "&cInt(MyYear)&"'>"

if (cInt(MyYear) = Year(Date)) and (cInt(MyMonth) = Month(Date)) and (CurrentDay = Day(Date)) then
calendari = calendari & "<div class='calResaltado'>"
else
calendari = calendari & "<div class='calSimbolo'>"
end if
calendari = calendari & CurrentDay & "</div></a></td>"
CurrentDay = CurrentDay + 1
End If
Next
calendari = calendari & "</tr>"
Next
calendari = calendari & "</table>"
calendari = calendari & "</form>"

End function
'------ Sub and functions

function ShowHeader(MyMonth,MyYear)
ShowHeader = ""
ShowHeader = ShowHeader & "<script language='JavaScript'>"
ShowHeader = ShowHeader & " function Hoy() {"
ShowHeader = ShowHeader & " DiaActual = new Date();"
ShowHeader = ShowHeader & " document.calendario.Month.value=DiaActual.getMonth ()+1;"
ShowHeader = ShowHeader & " document.calendario.Year.value=DiaActual.getYear() ;"
ShowHeader = ShowHeader & " document.calendario.submit();"
ShowHeader = ShowHeader & " }"
ShowHeader = ShowHeader & " </script>"
ShowHeader = ShowHeader & "<table border='0' cellspacing='1' cellpadding='1' width='245' align='center' class='calFondoCalendario'>"
ShowHeader = ShowHeader & " <tr align='center'> "
ShowHeader = ShowHeader & " <td colspan='7'>"
ShowHeader = ShowHeader & " <form name='calendario' action='calendar.asp' method='post'>"
ShowHeader = ShowHeader & " <table border='0' cellspacing='1' cellpadding='1' width='100%' class='calFondoEncabe'>"
ShowHeader = ShowHeader & " <tr>"
ShowHeader = ShowHeader & " <td align='left' class='calDatos'>"
ShowHeader = ShowHeader & " Mes:"
ShowHeader = ShowHeader & " <select name='Month' onChange='javascript:document.calendario.submit(); ' class='calDatos'>"
For i= 1 to 12
cadena = ""
if (CInt(MyMonth)=i) then
cadena = "selected"
end if
ShowHeader = ShowHeader & "<option value='" & i & "' " & cadena & ">" & MonthName(i) & "</option>"
next
ShowHeader = ShowHeader & " </select>"
ShowHeader = ShowHeader & " </td>"
ShowHeader = ShowHeader & " <td align='center'>"
ShowHeader = ShowHeader & " <input type='button' onClick='javascript:Hoy()' value='Hoy' class='calDatos'>"
ShowHeader = ShowHeader & " </td>"
ShowHeader = ShowHeader & " <td align='right' class='calDatos'>"
ShowHeader = ShowHeader & " Año:"
ShowHeader = ShowHeader & " <select name='Year' onChange='javascript:document.calendario.submit(); ' class='calDatos'>"
anyActual = year(Date)
For i= 1 to 20
cadena = ""
Anys = (anyActual - 10) + i
if (CInt(MyYear)=Anys) then
cadena = "selected"
end if
ShowHeader = ShowHeader & "<option value='" & Anys & "' " & cadena & ">" & Anys & "</option>"
next
ShowHeader = ShowHeader & " </select>"
ShowHeader = ShowHeader & " </td>"
ShowHeader = ShowHeader & " </tr>"
ShowHeader = ShowHeader & " </table>"
ShowHeader = ShowHeader & " </td>"
ShowHeader = ShowHeader & " </tr>"
ShowHeader = ShowHeader & " <tr align='center'> "
ShowHeader = ShowHeader & " <td bgcolor='#FFCC99'><div class='calDias'>Lun</div></td>"
ShowHeader = ShowHeader & " <td bgcolor='#FFCC99'><div class='calDias'>Mar</div></td>"
ShowHeader = ShowHeader & " <td bgcolor='#FFCC99'><div class='calDias'>Mie</div></td>"
ShowHeader = ShowHeader & " <td bgcolor='#FFCC99'><div class='calDias'>Jue</div></td>"
ShowHeader = ShowHeader & " <td bgcolor='#FFCC99'><div class='calDias'>Vie</div></td>"
ShowHeader = ShowHeader & " <td bgcolor='#FFCC99'><div class='calDias'>Sab</div></td>"
ShowHeader = ShowHeader & " <td bgcolor='#FFCC99'><div class='calDias'>Dom</div></td>"
ShowHeader = ShowHeader & " </tr>"
End function

Function MonthName(MyMonth)
Select Case MyMonth
Case 1
MonthName = "Enero"
Case 2
MonthName = "Febrero"
Case 3
MonthName = "Marzo"
Case 4
MonthName = "Abril"
Case 5
MonthName = "Mayo"
Case 6
MonthName = "Junio"
Case 7
MonthName = "Julio"
Case 8
MonthName = "Agosto"
Case 9
MonthName = "Septiembre"
Case 10
MonthName = "Octubre"
Case 11
MonthName = "Noviembre"
Case 12
MonthName = "Diciembre"
Case Else
MonthName = "ERROR!"
End Select
End Function

Function LastDay(MyMonth, MyYear)
' Returns the last day of the month. Takes into account leap years
' Usage: LastDay(Month, Year)
' Example: LastDay(12,2000) or LastDay(12) or Lastday
Select Case MyMonth
Case 1, 3, 5, 7, 8, 10, 12
LastDay = 31
Case 4, 6, 9, 11
LastDay = 30
Case 2
If IsDate(MyYear & "-" & MyMonth & "-" & "29") Then LastDay = 29 Else LastDay = 28
Case Else
LastDay = 0
End Select
End Function
%>
  #5 (permalink)  
Antiguo 04/03/2005, 13:28
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola de nuevo, vpino
A ver, tu código es complejo porque mezcla lenguajes que no conozco, pero espero haberlo entendido lo suficiente.
1) Asumo que la función calendari() devuelve bien la fecha.
2) En calendario.asp dice:
Código PHP:
 response.write(calendari(any,mes))%> 
y no sé qué es "response".
3) Vaya, me he perdido Saltándonos la generación del calendario ¿qué parte del código es la que devuelve el dato del día elegido? No la veo.
4) A ciegas: quizás la clave esté en
Código PHP:
pagina que recibirá la fecha seleccionada por el usuario
URLDestino 
=programa 
Prueba a poner programa.opener ...no sé, quizás...
__________________
Angel :cool:
  #6 (permalink)  
Antiguo 04/03/2005, 14:00
Avatar de kova  
Fecha de Ingreso: marzo-2003
Mensajes: 79
Antigüedad: 21 años, 1 mes
Puntos: 0
Hola VPINO, te cuento que estube un buen rato viendo tu código, por lo que veo, el calendario que estas utilizando, fue programado para que funcionara directamente sobre la página madre, seguramente, corregime si me equivoco, al seleccionar los días lo único que conseguis es un refresco de la página que abristes.

Para conseguir lo que estas buscando, creo que va a ser muy complicado, va en realidad no lo es tanto, pero tampoco es tan simple como tan solo vincular con el opener, te explico porque, el mayor problema de este calendario es el hecho de que el mismo submit que realiza cuando seleccionas un día (empezando por que no te conviene que realize un submit) es igual al que realiza cuando seleccionas un año diferente, etc. el problema es que, en el caso de que simplemente agregues código para que cierre la pantalla al realizar un submit, te estaría cerrando la pantalla tambien si le cambias tan solo el año, cosa que estaría medio mal, no se si me explico.

Lo que te recomendaría es utilizar otro calendario, existen varios en internet, he incluso te recomiendo uno que es bastante fácil de usar, hecho con javascript, altamente configurable y muy potente, cuando lo veas me vas a entender.

El vinculo es este:

http://javascript.internet.com/calen...alendarxp.html

Clickea en Download demo para bajarlo, y no te preocupes que no es una demo. Para usarlo esta todo explicado, pero se basa principalmente en copiar una carpeta de archivos a tu sitio, y despues en la página agregar un iframe y el vinculo. Fijate en los ejemplos que trae para entenderlo bien

Espero que te sirva

Mucha Suerte!!!
  #7 (permalink)  
Antiguo 04/03/2005, 14:44
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
respuesta a: angsanchez
1. es correcto que función calendari() devuelve bien la fecha.
2. como es un programa hecho en asp con utilides de javascript (en asp "response.write" se usa para mostrar contenido enla pantalla)
3. en esta linea se devuelve el dato elegido
calendari = calendari & "<a href='" &URLDestino& "?id= "&id&"&day= "&CurrentDay&"&month= "&cInt(MyMonth)&"&year= "&cInt(MyYear)&"'>"
4. en esta linea "URLDestino =programa" el nombre programa es el programa que llamo el calendario, lo defino asi por que el calendario es invocado desde varios programas y necesito saber quien lo invoco. por tal motivo creo que colocar "programa.opener" no funcionaria ya que el nombre "programa" internamente contiene un valor (ejm: cliente.asp)

no sabes cuanto te estoy agradeciendo el esfuerzo por ayudarme y espero continues asi.
  #8 (permalink)  
Antiguo 04/03/2005, 14:53
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
kova: estuve mirando el calendario es interesante, vere si lo puedo adaptar al formulario hecho en asp. ojala no sea complicado por que he buscado bastante este tema y lo consegui parcialmente tal como lo mecione al requerir la ayuda.

muchisisisisimas gracias por ayudarme, te contare luego los resultados obtenidos
  #9 (permalink)  
Antiguo 04/03/2005, 14:55
Avatar de kova  
Fecha de Ingreso: marzo-2003
Mensajes: 79
Antigüedad: 21 años, 1 mes
Puntos: 0
vpino, ahora que lo pones recien lo noto, fijate si podes en esa línea hacer algo por el estilo:
calendari = calendari & "<a href=""javascript: ;"" onclick= ""opener.document.nombreDelFormulario.txtfecha.val ue = "&CurrentDay&"/"& cInt(MyMonth)&"/"&cInt(MyYear);window.close();"">"

Fijate si funciona.
Suerte
  #10 (permalink)  
Antiguo 04/03/2005, 15:20
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
kova: hice la prueba y me genera eror asi:

Error de compilación de Microsoft VBScript (0x800A0401)
Se esperaba un final de instrucción

/calendario.asp, línea 44, columna 162
  #11 (permalink)  
Antiguo 05/03/2005, 11:21
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola Kova: el error se debe a que falta una comilla doble

calendari = calendari & "<a href=""javascript: ;"" onclick= ""opener.document.nombreDelFormulario.txtfecha.val ue = "&CurrentDay&"/"& cInt(MyMonth)&"/"&cInt(MyYear)";window.close();"">"

pero una vez corregidos esto, él me retorna una valor en decimales ejemplo 0.003491271820448878 y no la fecha como lo esperaba. Esto es un avance a mi problema y te agradezco en demasiado. como podre lograr que me muestre la fecha esperada?

mil y mil gracias por la ayuda que me prestas.
  #12 (permalink)  
Antiguo 07/03/2005, 06:15
Avatar de kova  
Fecha de Ingreso: marzo-2003
Mensajes: 79
Antigüedad: 21 años, 1 mes
Puntos: 0
vpino, tenías razón, faltaban las comillas dobles, pero no solo eso, tambien faltaba el & que concatena la cadena.

El problema de que te coloca un número en décimales es porque también me olvide de colocar las comillas simples entre el valor de la fecha, lo que ocurre es que al no tenerlas el lenguaje cree que lo que queres mostrar con, por ejemplo 13/01/2004 es el número resultante de 13 dividido 1 y esto dividido 2004 :)
colocando las comillas simples debería funcionar correctamente, el código quedaría así:

calendari = calendari & "<a href=""javascript: ;"" onclick= ""opener.document.formulario.txtfecha.value = '"&CurrentDay&"/"& cInt(MyMonth)&"/"&cInt(MyYear)&"';window.close();"">"

Mucha Suerte!!!
  #13 (permalink)  
Antiguo 07/03/2005, 06:39
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
Maravilloso kova: que haria sin ustedes? estuvo perfecta tu ayuda.
mil mil mil gracias por tanta colaboracion. buen suerte.
  #14 (permalink)  
Antiguo 07/03/2005, 07:26
Avatar de kova  
Fecha de Ingreso: marzo-2003
Mensajes: 79
Antigüedad: 21 años, 1 mes
Puntos: 0
Que bueno que te haya servido, me alegro.
Despues de todo para eso están los foros ¿no?

Saludos
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




La zona horaria es GMT -6. Ahora son las 05:04.