Foros del Web » Programando para Internet » Javascript »

Verificar cambios en formulario fuera de submit

Estas en el tema de Verificar cambios en formulario fuera de submit en el foro de Javascript en Foros del Web. Hola Necesito ayuda acerca de como hacer lo siguiente: Necesito que al cargar un formulario con datos me detecte si el usuario ha cambiado datos ...
  #1 (permalink)  
Antiguo 27/10/2006, 00:00
 
Fecha de Ingreso: diciembre-2002
Mensajes: 21
Antigüedad: 21 años, 5 meses
Puntos: 0
Exclamación Verificar cambios en formulario fuera de submit

Hola

Necesito ayuda acerca de como hacer lo siguiente:

Necesito que al cargar un formulario con datos me detecte si el usuario ha cambiado datos y está haciendo clic en algún otro enlace pero sin hacer clic en submit para guardar los datos, esto con la finalidad de preguntarle si desea perder sus cambios con un confirm(), si le dá "Cancelar", símplemente que ignore el clic que haya hecho sobre el enlace externo, lo estoy tratando con un

<body onunload="return VerificaDatos();">

pero no encuentro como hacer para que no cambie de página cuando el usuario hace clic en "Cancelar"

Espero puedan asesorarme.

Saludos

Atte
z24charly
  #2 (permalink)  
Antiguo 27/10/2006, 01:53
Avatar de isaacluz  
Fecha de Ingreso: marzo-2005
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 0
Saludos.
Alguna vez me encontré con el mismo problema, y hacer un onUnload o un onBeforeUnload no funciona, porque a fin de cuentas si le dan submit a la forma, el evento onUnload se disparará de todos modos.

Lo mas factible seria que a cada link le pusieras un
Código:
onClick="return VerificaDatos()"; 
para que verificara los campos de tu forma, pero si por alguna razón es demasiado engorroso cambiar todos los links, aqui te pongo un script de ejemplo para añadir el evento onClick a todos los links de tu pagina

Date cuenta de que el segundo script está al final del documento, si lo pones antes no leerá todos los links de tu pagina

Código HTML:
<html>
<script>
function VerificaDatos(){
     // AQUI EN VEZ DE ESTO HAS LA COMPROBACIÓN DE LOS CAMPOS DE TU FORMA
    AlgoHaCambiado = true;
    ////////////////////////////////////////////////////////////////////
    // ESTA ES LA CONFIRMACION FINAL
    if(AlgoHaCambiado){
        return confirm('Esta seguro de que desea salir sin guardar sus cambios?');
    }else{
        return true;
    };
};
</script>
<body >
<a href="http://forosdelweb.com">Link 1</a><br>
<a href="http://google.com">Link 2</a><br>
<a href="http://isaacluz.com">Link 3</a>
<script>    
    // OBTENEMOS EL ARRAY DE LOS ENLACES EN LA PAGINA
    Enlaces = document.links;
    // A CADA ENLACE LE PONEMOS LA FUNCION PARA VERIFICAR LOS DATOS
    for(i=0;i<Enlaces.length;i++){
        Enlaces[i].onclick =function(){return VerificaDatos()};
    };
    
    
</script>

</body>
</html> 
__________________
Regala un pescado a un hombre y lo alimetarás un día, enseñale a pescar y lo alimentarás toda su vida, no contestes su post y se enojará.

  #3 (permalink)  
Antiguo 27/10/2006, 12:32
 
Fecha de Ingreso: diciembre-2002
Mensajes: 21
Antigüedad: 21 años, 5 meses
Puntos: 0
Excelente

Me parece buena la solución, solo otra pregunta, sabes si hay algún método o algo en javascript que me detecte cuando se está tratando de cerrar la ventana del explorador ?

Saludos

Atte:
z24charly
  #4 (permalink)  
Antiguo 27/10/2006, 12:42
Avatar de isaacluz  
Fecha de Ingreso: marzo-2005
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 0
onBeforeUnload
__________________
Regala un pescado a un hombre y lo alimetarás un día, enseñale a pescar y lo alimentarás toda su vida, no contestes su post y se enojará.

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 13:38.