Страницы

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

среда, 20 февраля 2019 г.

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

Здравствуйте.
Есть скрипт, который ловит все обновления страницы (при нажатии на ссылку, при обновлении через 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(); } })


Ответ

Я так понял, что вам нужен такой результат:
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(); }; });

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

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


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

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