2010-06-13 9 views
9

Sé que esto limita con el tabú aquí, y por favor no responder con "nunca se debe hacer esto", etc.usuario Alerta cuando golpean el botón de retroceso del navegador - con buena razón

Tengo una muy una forma larga en un asistente, y algunos usuarios están demasiado acostumbrados a usar los botones hacia atrás y hacia adelante del navegador que usan esos en lugar de los botones "Atrás" y "Siguiente" en el asistente de formularios. Si presionan el botón de retroceso del navegador, perderán todos sus datos de formulario (lo cual es un dolor en el trasero, ya que el formulario es muy largo).

¿Es posible mostrar una alerta que cuando tendrá un botón "llévame de aquí" y un botón "cancelar", por lo que si presionan cancelar, cancelará la función del botón Atrás?

+2

No estoy seguro de que se trata de una regla de "nunca hagas esto". Stackoverflow me alerta cuando trato de salir de una página en la que no he guardado los cambios, y Gmail, y mi banco, etc. Y siempre estoy agradecido de que lo hayan hecho. También he visto que los datos de formulario de varias páginas persisten en las acciones del navegador de ida y vuelta, pero estaría contento con la alerta de Sarfraz a continuación. – msw

Respuesta

8

debe devolver un mensaje del evento onbeforeunload, así:

window.onbeforeunload = function() { 
    return "Leaving this page will reset the wizard"; 
}; 

Tenga en cuenta que este evento se dispara cuando el usuario abandona la página para cualquier razón, incluso después de su finalización del asistente.
Debe establecer un indicador cuando el asistente finalice y no devuelva un mensaje.

+0

window.onbeforeunload = function() { return "Salir de esta página restablecerá el asistente"; }; funcionó bastante bien. Aunque prefiero la sintaxis de jQuery, no pude obtener el código de Sarfraz Ahmed para mostrar un botón de cancelar y aceptar. Gracias SLaks –

+0

¿cómo se establece una bandera cuando el asistente finaliza? definitivamente necesito eso! –

+0

Depende. ¿Cómo termina tu asistente? Cree un 'var isWizardFinished = false;' global, luego ajústelo a 'true' cuando el asistente finalice. – SLaks

1

Usted puede utilizar el plugin barbacoa jQuery para reescribir la funcionalidad de los botones siguiente/anterior para que sea la transición más sin costuras largo de este "asistente"

http://benalman.com/projects/jquery-bbq-plugin/

Aunque es un poco complejo de configurar, eche un vistazo a los ejemplos proporcionados si está buscando la misma funcionalidad.

Es probable que tenga que refaccionar el código para adaptarlo, y le llevará horas.

Cuestiones relacionadas