2013-07-29 2 views
0

Я создал следующее jsfiddle.window.onbeforeunload не работает как ожидалось

Если вы введете любой ввод в любом из полей редактирования и попытаетесь покинуть страницу, отобразится предупреждение, которое будет нормально.

Если вы вводите любой ввод и щелкаете по кнопке, предупреждение все еще отображается, когда это требование не должно быть. (Мне нужно помешать отображению).

На веб-странице кажется, что window.onbeforeunload выбрасывается раньше, чем событие click, поэтому оно всегда будет отображать диалоговое окно предупреждения, даже если вы нажмете кнопку отправки.

Это заставляет меня думать, что код должен измениться, чтобы иметь дело с сроками событий, но не уверен?

+0

Какое событие щелчка вы говорите? В вашей Fiddle ничего не происходит с событием 'window.onbeforeunload'? – putvande

ответ

1

Похоже, что вы хотите, чтобы сообщение onbeforeunload показывалось при отправке формы.

Просто добавьте обработчик submit, который возвращает значение form_has_been_modified в значение false.

$("#additemform").on('submit', function(e) { 
    form_has_been_modified = false; 
}); 

Working Demo

В этой демонстрации я также очистить свой пример, удаляя ненужные обработчики и изменил form_has_been_modified использовать родной логический true и false вместо 0 и 1.

+0

Спасибо, я обновил скрипку здесь http://jsfiddle.net/5D9qh/17/, вы можете видеть, что после ввода значения на входах и нажатия кнопки «Отправить» все еще отображается предупреждение. – Athanatos

+0

Какой браузер вы используете? Я не вижу сообщения, когда я отправляю форму; Я использую Chrome 28. – cfs

+0

IE10 и Mozilla 22.0, я проверил в CHROME и работает как ожидалось (я тоже не вижу сообщение). – Athanatos