Всплывающая проблема JavaScript перед переходом со страницы

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Приведенный ниже код вызывает всплывающее окно «Нажмите Сохранить!», если были внесены изменения в поля ввода, и кто-то пытается перейти со страницы, не нажимая кнопку отправки для сохранения.

Может кто-нибудь сказать мне, как внести небольшое изменение в это, которое вызовет всплывающее окно «Нажмите Сохранить!» при ЛЮБОЙ попытке перехода со страницы, даже если ни в одно из полей ввода не было внесено изменений (но, конечно, по-прежнему не всплывает, если они нажимают кнопку отправки)?

 var warnMessage = "Click Save!"; 

$(document).ready(function() { 
    $('input:not(:button,:submit),textarea,select,text').change(function () { 
    window.onbeforeunload = function () { 
        if (warnMessage != null) return warnMessage; }}); 
    $('input:submit').click(function(e) { 
                warnMessage = null; 
    }); 
}); 
  

Комментарии:

1. Просто удалите все, кроме onbeforeunload обработчика?

2. Это работает, но теперь это делается для каждой отдельной страницы с вводом или без, поэтому мне придется придумать что-нибудь, чтобы изолировать ее только для редактирования страницы. Спасибо

Ответ №1:

 var warnMessage = false;

window.onbeforeunload = function (event) {
    if (!warnMessage) {
        return;
    }
    else {
        return "You have unsaved changes on this page.  If you wish to save these changes, stay on the current page.";
    }
}

$(document).ready(function () {
    $('input:not(:button,:submit),textarea,select,text').change(function (event) {
        warnMessage = true;
    });

    $('input:submit').click(function () {
        warnMessage = false;
    });
});