2010-04-16 3 views
0

В настоящее время у меня есть форма, которая проверяет, не имеет ли пользователь непредвиденных изменений, когда они покидают страницу с помощью функции, вызванной событием onunload. Вот функция:Javascript onunload form submit не отправляет данные

function saveOnExit() { 
    var answer = confirm("You are about to leave the page. All unsaved work will be lost. Would you like to save now?"); 
    if (answer) { 
     document.main_form.submit(); 
    } 
} 

А вот форма:

<body onunload="saveOnExit()"> 
<form name="main_form" id="main_form" method="post" action="submit.php" onsubmit="saveScroll()"> 
    <textarea name="comments"></textarea> 
    <input type="submit" name="submit2" value="Submit!"/> 
</form> 

Я не уверен, что я делаю неправильно здесь. Данные передаются и сохраняются в моей базе данных, если я просто нажимаю кнопку отправки для формы. Однако попытка отправить форму через событие onunload не приводит к тому, что что-либо хранится, из того, что я могу сказать. Я попытался добавить onclick предупреждения к кнопке отправки и onsubmit оповещения к элементам формы, и я могу проверить, что кнопка отправки запускается и что форма отправляется. Однако в базе данных ничего не передается. Любые идеи относительно того, что я делаю неправильно?

Спасибо.

ответ

3

Попробуйте onbeforunload

событие, которое срабатывает до события выгрузить когда страница выгружается.

Также дайте return false в конце функции условия, в которых данные не должны быть отправлены.

+0

Спасибо за предложение onbeforeunload. Я пересмотрел свой код и заставил его работать по-другому. – holic87