#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(); }; });
Комментариев нет:
Отправить комментарий