Я пытаюсь добиться того, чтобы предупредить пользователя о несохраненных изменениях, если он / она пытается закрыть страницу или отойти от нее, не сохранив сначала.
Мне удалось заставить всплывающее диалоговое окно OnBeforeUnload()
... но я не хочу, чтобы оно вообще отображалось, если пользователь не изменил значения полей. Для этого я использую это скрытое поле ввода с именем is_modified , которое начинается со значения по умолчанию false и переходит на true при редактировании любого поля.
Я попытался привязать событие change к этому полю is_modified, чтобы попытаться обнаружить изменение значения ... и только затем активировать OnBeforeUnload.
$( '#is_modified' ).change( function() {
if( $( '#is_modified' ).val() == 'true' )
window.onbeforeunload = function() { return "You have unsaved changes."; }
});
Но из того, что я считаю, событие change()
работает только после этих 3 шагов - поле получает фокус, значение изменяется, и поле теряет фокус. В случае скрытого поля ввода, я не уверен, как работает эта часть приема и потери фокуса! Следовательно, функция onbeforeunload никогда не активируется.
Может кто-нибудь предложить способ поддержания триггера над is_modified?
Спасибо.