validar validacion pattern nombre formulario enviar carga asincrona antes javascript javascript-events onbeforeunload onunload

javascript - validacion - validar formulario jquery



verificar si los cambios se guardaron antes de descargar (2)

window.onbeforeunload = function () { var changesSaved = confirm("You havent saved your changes. Are you sure you want to leave the page?"); if (changesSaved) { return true; } else { return false; }

Tengo el siguiente javaScript

EDIT: asignaciones incluidas para cahngesSaved

var changesSaved = true; $(document).ready(function () { $(".applyChanges").click(function (e) { e.preventDefault(); var id = (this).id; var dayofweek = document.getElementById("dayofweek" + id).value; var hour = document.getElementById("hour" + id).value; var duration = document.getElementById("duration" + id).value; $.ajax({ url: ''@Url.Action("ApplyChanges")'', type: ''POST'', data: { id: id, dayofweek: dayofweek, hour: hour, duration: duration }, success: function (data) { $(''#Calendar'').fullCalendar(''refetchEvents'') $(''#Calendar2'').fullCalendar(''refetchEvents'') changesSaved = false; } }); }); }); window.onbeforeunload = function () { if (changesSaved == true) { return true; } else { return ("You havent saved your changes. Are you sure you want to leave the page?") } }

pero el mensaje se envía independientemente de los cambios que se hayan guardado.

Lo que realmente obtengo es lo siguiente:

o si changesSaved se establece en false, dice false en su lugar.

¿No puedo hacer esto?


<body onbeforeunload="return bye()"> function bye(){ if(changesSaved) { return "You havent saved your changes." } }

Así es como lo hago.

o en JavaScript puro:

window.onbeforeunload = function() { if (changesSaved) { return "You haven''t saved your changes."; } };