Не показывать предупреждение onbeforeunload при нажатии кнопки отправки - PullRequest
1 голос
/ 01 марта 2012

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

var changed_flag = 0;

$('input').change(function() {
    changed_flag = 1;
});

window.onbeforeunload = function() {
    if(changed_flag) {
        return 'You haven't saved your work!'
    }
};

Я знаю, что должен отредактировать $('input').change(... и добавить input[type="submit"], но я не знаю, как и где. Кто-нибудь знает, как я могу решить эту проблему?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 01 марта 2012

Попробуйте

$('form').submit(function() {
    changed_flag = 0;
});
0 голосов
/ 01 марта 2012

Просто сделайте так, чтобы ваша кнопка отправки удалила событие или вернула 0.Sign_flag обратно 0.

<input type="submit" onmousedown="changed_flag = 0" />

РЕДАКТИРОВАТЬ: На секунду подумайте, поместите этот код в ваш обработчик отправки на случай, если форма будет отправлена ​​другим способом (например, нажатием клавиши ввода или с помощью другой функции).

0 голосов
/ 01 марта 2012
$('form').submit(function() {
    $(window).unbind('beforeunload');
});

В качестве альтернативы вместо отмены привязки вы можете просто сделать changed_flag = 0

...