Si un usuario está en una página con un formulario, y ha editado algo, y luego intenta navegar a otra página, ¿cómo puedo notificarlo?

Cómo hacen esto las personas?

¿Se trata de calcular un hash de todos los campos de entrada y comparar si están saliendo de la página?

¿Hay un evento de descarga en la página?

3
codecompleting 11 ago. 2011 a las 23:05

3 respuestas

La mejor respuesta

Solo me gusta preguntarle al usuario si realmente ha cambiado algo. Algo como esto:

var changesMade = false;

function onDataChanged() {
    changesMade = true;
}

$('input:text, textarea, select').change(onDataChanged);
$('input:checkbox, input:radio').click(onDataChanged);

$(window).bind('beforeunload', function() {
    if (changesMade) {
        return 'Changes have been made. Are you sure you want to leave the page?';
    } else {
        return null;
    }
});
6
FishBasketGordo 11 ago. 2011 a las 19:26

Utilice el evento beforeunload de la ventana.

$(window).bind('beforeunload', function() {
        return confirm("Alert user");
    }); 
0
ShankarSangoli 11 ago. 2011 a las 19:08

El evento onbeforeunload:

$(window).bind('beforeunload', function() {
    return 'Are you sure?';
});

En algunos navegadores esto muestra el mensaje, en otros navegadores no se muestra el mensaje. Sin embargo, muestra un cuadro de diálogo con un botón Leave y Stay en todos los navegadores (hasta donde yo sé) para que el usuario pueda elegir.

0
pimvdb 11 ago. 2011 a las 19:07