Foros del Web » Programando para Internet » Javascript »

Consulta con Onbeforeunload

Estas en el tema de Consulta con Onbeforeunload en el foro de Javascript en Foros del Web. Hola Foreros: Tengo el siguiente problema, que necesito ver si me pueden ayudar a resolver. Primero, abro una ventana popup con un formulario para ingresar ...
  #1 (permalink)  
Antiguo 18/03/2008, 13:13
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
Pregunta Consulta con Onbeforeunload

Hola Foreros:

Tengo el siguiente problema, que necesito ver si me pueden ayudar a resolver. Primero, abro una ventana popup con un formulario para ingresar ciertos datos. Esta apertura la hago con la funcion window.open() del js. Ademas, tengo en la ventana popup, una funcion beforeunload, de manera que avise que si cierro la pagina, que no se guardaran los cambios:

Código:
<SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript">
<!--
window.onbeforeunload = unloadMess;
function unloadMess(){
	mess = "Los cambios realizados no se guardarán"
	return mess;

}
//-->

</SCRIPT>
Sin embargo, cuando el formulario esta completo, realizo una comprobación primero de los datos ingresados, y si todo sale bien, deberia hacer un submit al formulario, pero lamentablemente, despues de comprobar el form., me da el mensajito de que si salgo, no se guardan los cambios (obviamente por la funcion onbeforeunload). Existe alguna forma que si hago submit al formulario, no aparezca el mensaje..??

Agradeceré cualquier comentario..

Salud!!
  #2 (permalink)  
Antiguo 18/03/2008, 13:49
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
Re: Consulta con Onbeforeunload

Zick: Lo tienes fácil. Crea una variable global buleana que sea alterada cuando se envíe el formulario. La función para el evento "onBeforeUnload" puede verificar esa variable para saber si la página se está descargando de la memoria por el envío del formulario o simplemente porque el documento ha cambiado.
  #3 (permalink)  
Antiguo 19/03/2008, 12:46
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
Re: Consulta con Onbeforeunload

Cita:
Iniciado por Negora Ver Mensaje
Zick: Lo tienes fácil. Crea una variable global buleana que sea alterada cuando se envíe el formulario. La función para el evento "onBeforeUnload" puede verificar esa variable para saber si la página se está descargando de la memoria por el envío del formulario o simplemente porque el documento ha cambiado.
Hola Negora, gracias por tu respuesta.
Cita:
Iniciado por Negora Ver Mensaje
Zick: Lo tienes fácil. Crea una variable global buleana que sea alterada cuando se envíe el formulario.
De partida, no se como hace booleanos, por ende, menos programarla para que ejecute una accion.

Cita:
Iniciado por Negora Ver Mensaje
La función para el evento "onBeforeUnload" puede verificar esa variable para saber si la página se está descargando de la memoria por el envío del formulario o simplemente porque el documento ha cambiado.
¿¿¿¿?????? Y eso como se puede hacer.. es posible saber si el usuario presiono aceptar o cancelar y a raiz de esto ejecutar algo?? la verdad.. quede muy confundido

A la espera de mas comentarios,

Salud!!
  #4 (permalink)  
Antiguo 19/03/2008, 12:54
Avatar de Negora  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 8 meses
Puntos: 5
Re: Consulta con Onbeforeunload

zick: A ver, no sea que yo te haya entendido mal...

Lo que quieres hacer es que, cuando una página se descargue de memoria, aparezca un mensaje que advierta de que los cambios realizados no se guardarán. Y tú problema es que este mensaje, además de aparecer cuando se cierra la ventana o se carga otro documento, también lo hace cuando un formulario se está enviando y no debería de suceder ¿Es correcto?

Si es así, lo que te decía es que el problema viene derivado de que al enviar el formulario, el documento se carga de nuevo, y de ahí que dispare el evento beforeUnload.

Pues bien, si quieres evitarlo, y basándome en tu código, sería algo así:

Código:
<SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript">
<!--

var enviando = false;

window.onbeforeunload = unloadMess;

function unloadMess () {
        if (! enviando) {
        	mess = "Los cambios realizados no se guardarán"
        	return mess;
        }
}

form.onsubmit = onSubmit;

function onSubmit () {
        enviando = true;
}

//-->

</SCRIPT>
Eso sí, ten en cuenta que "form" debe de ser tu formulario, no "form" tal cual.
  #5 (permalink)  
Antiguo 19/03/2008, 17:28
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
De acuerdo Re: Consulta con Onbeforeunload

Hola, lo voy a testear y te comento como me fue..

Gracias..

Salud!!!
  #6 (permalink)  
Antiguo 19/06/2008, 15:16
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Consulta con Onbeforeunload

Es posible saber diferenciar cual de estos eventos sucede:

- La X de cerrar
- ALT+F4
- F5

???
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 14:52.