2011-07-24 8 views
6

Estoy creando una cuadrícula de datos con cientos de filas que contienen una casilla de verificación en cada fila para que el usuario pueda seleccionar un elemento de la cuadrícula.Prevenir la pérdida de datos de formulario navegando fuera de la página

Ahora el usuario puede pasar una gran cantidad de tiempo filtrando/buscando a través de la cuadrícula y marcando las casillas requeridas, solo para presionar accidentalmente la tecla de retroceso en su teclado o hacer clic en un hipervínculo en la página. Y perderían todas sus selecciones de casillas de verificación.

Así que quiero presentar algunas funcionalidades por las cuales si al menos una casilla de verificación ha sido marcada, entonces si el usuario involuntariamente realiza una acción que los alejaría de la página, se muestra un mensaje de confirmación de JavaScript para notificar al usuario esta.

Las casillas de verificación pertenecerían todas al mismo grupo, por ejemplo se llamarían "productos".

¿Es posible hacer esto en absoluto?

+1

¿Has probado la LocalStorage de HTML5? – PhD

Respuesta

10

Hay un evento beforeunload que se produce cuando el usuario navega fuera: http://jsfiddle.net/FprNV/1/.

Al devolver una cadena allí, aparece un mensaje que aparece con dos botones (permanecer/navegar); la implementación exacta de este diálogo es diferente en todos los navegadores.

$(window).bind('beforeunload', function() { 
    var checkboxcount = $("input:checkbox:checked").length; 
    if(checkboxcount > 0) { 
     return 'Are you sure?'; 
    } 
}); 
+0

¿También funciona para salir de la página publicando un formulario diferente? – TMS

+1

¿Es compatible este navegador cruzado? ¿Pueden los navegadores desactivarlo? (Algunas páginas hacen un mal uso de la función y son realmente molestas cuando intentas cerrarlas ...) – TMS

+0

@Tomas Telensky: Funciona para cualquier salida, también para cerrar la ventana, etc. No conozco ningún medio para desactivarlo que el el usuario puede usar. Sin embargo, funciona en todos los principales navegadores. ... excepto Opera y Safari ahora veo. Y parece que solo Chrome realmente muestra el mensaje personalizado, IE y Firefox muestran un mensaje genérico incorporado. – pimvdb

Cuestiones relacionadas