То, что я пытаюсь достичь, - предупредить пользователя о несохраненных изменениях, если он пытается закрыть страницу или перейти от нее, не сохраняя в первую очередь.
Мне удалось открыть диалог 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()
работает только после этих трех шагов - поле получает фокус, значение изменяется и поле теряет фокус. В случае скрытого поля ввода, я не уверен, как это происходит и теряется часть фокуса! Следовательно, функция onbeforeunload никогда не активируется.
Может ли кто-нибудь предложить способ поддержания триггера по is_modified?
Спасибо.