Остановить отображение несохраненной формы при сохранении страницы при обновлении страницы - PullRequest
4 голосов
/ 07 января 2012

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

В Safari (но не в Chrome или FF), если вы начнете печатать в форме и нажмете перезагрузить, браузер предложит вам диалоговое окно типа «вы уверены, что хотите перезагрузить, у вас есть несохраненные изменения». Моя проблема в том, что диалоговое окно также всплывает, если вы сохраните заметку, а затем нажмете перезагрузить, не внося никаких дополнительных изменений в текстовую область. Есть ли в javascript способ пометить форму как отправленную // без изменений, чтобы сафари знал, что подсказка не отображается?

Ответы [ 2 ]

1 голос
/ 07 января 2012

Я не слишком уверен насчет сафари, но вы можете иметь такое поведение во всех браузерах со следующим:

var confirmLeavePage = "Are you sure you want to exit this page, you have unsaved changes..."
window.onbeforeunload = askConfirm;
function askConfirm(){
    if (confirmLeavePage != false){
        return confirmLeavePage;
    }
}

, тогда все, что вам нужно сделать, это установить в качестве falseLivePage значение false, если в документе нет изменений.

Надеюсь, это поможет.

1 голос
/ 07 января 2012

Вероятно, не самое лучшее решение вашей проблемы здесь ... однако, если вы удалите теги html формы из вашей формы, это должно решить ее.

Поскольку вы уже используете ajax, вы можете получить значения элементов непосредственно из DOM ..

пример ...

 <form><textarea></textarea></form>

выдаст Вы уверены сообщение .. где

 <textarea></textarea>

просто перезагрузится.

Надеюсь, это поможет в пятницу днем:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...