Возврат значения beforeunload при сбое отправки формы
Чтобы хорошо объяснить мой вопрос, я хочу добиться поведения, которое заключается в выключении window.beforeunload, когда я нажимаю кнопку подтверждения, но когда форма не прошла валидацию, я хочу снова включить window.beforeunload. Заранее спасибо за помощь! Это мой код:
var Form = (function() {
var formSubmitting = false;
var formId = null;
function onBeforeUnload(e) {
if (formSubmitting) {
return undefined;
}
if ($(formId).find('.changed-input').length || $(formId).find('.has-error').length) {
return 'Are you sure you want to discard all changes?';
}
}
function setForm(form) {
formId = form;
}
$(window).on('beforeunload', onBeforeUnload);
return {
attachEvents: function (form) {
setForm(form);
$(form).on('change keyup keydown', 'input, textarea, select', function (e) {
$(this).addClass('changed-input');
});
$(form).find(':submit').on('click', function (e) {
// flag to turn off the beforeunload event
formSubmitting = true;
})
}
}
})();