Gatillo onbeforeunload si no se presenta la forma
-
09-10-2019 - |
Pregunta
Tengo un formulario que se presenta a través de PHP con 3 presentar acciones:
- Guardar y continuar
- Guardar y Salir
- Salir sin guardar
Me gustaría para activar una alerta "Onbeforeunload" que se mostrará si el usuario no haga clic en cualquiera de las acciones de formulario para informarles de que están dejando a la página, y sus cambios no se pueden guardar.
He intentado el siguiente código pero parece como si el unbeforeunload se active antes de mi evento de clic. ¿Alguna sugerencia sobre la mejor manera de lograr esto?
$buttonpressed = false;
$j(".Actions input").click(function(){
$buttonpressed = true;
});
if(!$buttonpressed){
window.onbeforeunload = function(){
return "Your changes may not be saved.";
}
}
Solución
Es necesario hacer el check dentro de el manipulador, así:
window.onbeforeunload = function(){
if(!$buttonpressed){
return "Your changes may not be saved.";
}
}
Actualmente se window.onbeforeunload
vinculante cuando el código se ejecuta porque $buttonpressed
es false
cuando se acaba ... no importa si cambia más adelante puesto que ya obligado al controlador. Una alternativa es hacer que sea un poco más simple, como esto:
window.onbeforeunload = function(){
return "Your changes may not be saved.";
}
$j(".Actions input").click(function(){
window.onbeforeunload = null;
});
Esto sólo elimina el manejador de click
lugar. Un caso más apropiado para manejar otros someter casos serían para insertarse en el caso submit
, como esto:
$j(".myForm").submit(function(){
window.onbeforeunload = null;
});