0

onunload現在、ユーザーがイベントを通じて呼び出された関数を使用してページを離れるときに、ユーザーが未送信の変更を持っているかどうかを確認するフォームがあります。関数は次のとおりです。

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し、フォーム要素にアラートを追加しようとしましたが、送信ボタンがトリガーされ、フォームが送信されることを確認できます。ただし、データベースに保存されているものは何も渡されません。私が間違っていることについて何か考えはありますか?

4

1 に答える 1

3

onbeforunload を試す

ページがアンロードされるときに unload イベントの前に発生するイベント。

データを送信してはならreturn falseない条件についても、関数の最後に指定します。

于 2010-04-16T07:52:54.993 に答える