Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Окно подтверждения при перезагрузке страницы

#javascript #jquery


Здравствуйте. 

Есть скрипт, который ловит все обновления страницы (при нажатии на ссылку, при обновлении
через F5, через CTRL+F5 и т.д.) и перед обновлением появляется окно с сообщением что
данные могут быть не сохранены. Нужно сделать для того, чтобы пользователь случайно
не обновил страницу когда в форме есть текст.

Нужно сделать так, чтобы при нажатии на ссылку с id="ms-submit-button" окно не появлялось.

Пробовал сделать исключение с помощью jQuery, не получилось.

function Unloader(){

var o = this;

this.unload = function(evt)
{
    var message = "Данные не будут сохранены после обновления страницы или перехода";
        if($("#taskname").val() != "" || $(".note-editable").text()) { // проверка
моих полей на пустоту
            if (typeof evt == "undefined") {
                evt = window.event;
            }
            if (evt) {
                evt.returnValue = message;
            }
            return message;
        }
    }

    this.resetUnload = function()
    {
        $(window).off('beforeunload', o.unload);

         setTimeout(function(){
            $(window).on('beforeunload', o.unload);
        }, 2000);
    }

    this.init = function()
    {

        $(window).on('beforeunload', o.unload);

        $('a').on('click', function(){o.resetUnload});
        $(document).on('submit', 'form', function(){o.resetUnload});
        $(document).on('keydown', function(event){
            if((event.ctrlKey && event.keyCode == 116) || event.keyCode == 116){
                o.resetUnload;
            }
        });
    }
    this.init();
}

$(function(){
    if(typeof window.obUnloader != 'object')
    {
        window.obUnloader = new Unloader();
    }
})

    


Ответы

Ответ 1



Я так понял, что вам нужен такой результат: function Unloader() { var o = this; this.unload = function(evt) { var message = "Данные не будут сохранены после обновления страницы или перехода"; if ($("#taskname").val() != "" || $(".note-editable").text()) { // проверка моих полей на пустоту if (typeof evt == "undefined") { evt = window.event; }; if (evt) { evt.returnValue = message; }; return message; }; }; this.resetUnload = function() { $(window).off('beforeunload', o.unload); setTimeout(function() { $(window).on('beforeunload', o.unload); }, 2000); }; this.init = function() { $(window).on('beforeunload', o.unload); // Клик на a#ms-submit-button $('a#ms-submit-button').on('click', function() { $(window).off('beforeunload', o.unload); setTimeout(function() { $(window).on('beforeunload', o.unload); }, 2000); }); $(document).on('submit', 'form', function() { o.resetUnload; }); $(document).on('keydown', function(event) { if ((event.ctrlKey && event.keyCode == 116) || event.keyCode == 116) { o.resetUnload; }; }); }; this.init(); }; $(function() { if (typeof window.obUnloader != 'object') { window.obUnloader = new Unloader(); }; });

Ссылка без подтверждения

Ссылка с подтверждением



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

Отправить комментарий