Diálogo jQuery UI OnBeforeUnload
jquery-ui-dialog (6)
Esto funciona para mí:
window.addEventListener("beforeunload", function(event) {
event.returnValue = "You may have unsaved Data";
});
Tengo un pequeño problema. Intento atrapar el evento OnUnLoad de la ventana y hacer una pregunta de confirmación y, si el usuario decide que quiere quedarse, está bien, y si quiere abandonar la página, perderá todos los datos no guardados. Aquí están los problemas ...
Estoy usando un diálogo de interfaz de usuario de jQuery y cuando coloco el siguiente código en mi página, tengo el cuadro de diálogo abierto, y cuando hago clic en el botón Atrás en el navegador, nunca aparece el cuadro de mensaje. Simplemente refresca la página:
<script type="text/javascript">
$(window).bind(''beforeunload'', function() {
alert(''you are an idiot!'');
}
);
</script>
Y la solución que estoy usando es una publicación here . Una vez más, el msgbox se mostrará bien si no tengo el cuadro de diálogo de jQuery UI abierto. Si lo hago, entonces no muestra el msgbox y simplemente refresca la página.
¿Algunas ideas?
La API de jQuery dice específicamente que no se vincule a beforeunload, y en su lugar debe vincularse directamente a la ventana. Antes de la descarga, me encontré con una memoria bastante mala en parte vinculada a beforeunload con jQuery.
La forma correcta de mostrar la alerta es simplemente devolver una cadena. No llame al método alert()
usted mismo.
<script type="text/javascript">
$(window).on(''beforeunload'', function() {
if (iWantTo) {
return ''you are an idiot!'';
}
});
</script>
Ver también: https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload
Para ASP.NET MVC, si desea hacer una excepción para salir de la página mediante el envío de un formulario en particular:
Establezca una ID de formulario:
@using (Html.BeginForm("Create", "MgtJob", FormMethod.Post, new { id = "createjob" }))
{
// Your code
}
<script type="text/javascript">
// Without submit form
$(window).bind(''beforeunload'', function () {
if ($(''input'').val() !== '''') {
return "It looks like you have input you haven''t submitted."
}
});
// this will call before submit; and it will unbind beforeunload
$(function () {
$("#createjob").submit(function (event) {
$(window).unbind("beforeunload");
});
});
</script>
También puede hacer una excepción por abandonar la página mediante el envío de un formulario en particular:
$(window).bind(''beforeunload'', function(){
return "Do you really want to leave now?";
});
$("#form_id").submit(function(){
$(window).unbind("beforeunload");
});
esto funciona para mí
$(window).bind(''beforeunload'', function() {
return ''Do you really want to leave?'' ;
});