2016-04-04 4 views
2

У меня есть несколько входов в форме, и я хочу открыть всплывающее окно предупреждения только после редактирования поля ввода. Как я могу это сделать?Как получить предупреждающее сообщение, если в javascript нажата кнопка «Назад»?

Что я делал в предыдущем случае, всякий раз, когда я открываю страницу редактирования, я просто проверяю длину, если она больше нуля. Я даю предупреждение.

Но теперь мне нужно получить предупреждение только тогда, когда я поглаживаю любую клавишу и нажимаю кнопку «Назад». Есть ли для этого решение?

+2

try' window.onbeforeunload = function() {return "Ваша работа будет потеряна."; }; ' –

+0

забыть о ключевом штрихе. проверьте данные до и после нажатия кнопки «Назад». если данные изменились, тогда сделайте так, как указано выше, комментарий –

+0

Обратите внимание, что 'onbeforeunload' будет вызываться при перезагрузке, а любой другой экземпляр оставления страницы –

ответ

1

Когда страница/документ первой нагрузки, создать переменную, которая отслеживает текущее состояние различных полей ввода, например

window.unsaved = false.

Когда пользователь нажимает любую клавишу на любом из ваших полей ввода (проверьте это с помощью прослушивателя событий, или если вы используете JQuery, используя KeyDown события), изменился unsaved быть true. В пределах onbeforeunload, проверьте, не несохранен ли == true, и если да, отобразите свое предупреждение.

Если вы используете jQuery,, вы можете сделать что-то вроде;

$(document).ready(function(){ 
    // put this next variable in the global scope (window.) so you can 
    // access it from unload 

    window.unsaved == false; 

    $('input').keydown(function(){ 
    window.unsaved == true; 
    }) 
}) 

$(window).unload(function() { 
    if(window.unsaved == true){ 
    alert('You have unsaved work.'); 
    } 
}); 
Смежные вопросы