3

ここには同様の質問がたくさんありますが、フォームを送信した(つまり、処理中に)ユーザーがページを離れるのを止めることを扱うものは見つかりませんでした。

Web サイトにフォームの送信に時間がかかるページがあるため (場合によっては 15 秒)、ユーザーがフォームを送信した後もページに留まるようにポップアップ警告を表示したいと考えています。

問題は、どのように使用しようとしてもwindow.onbeforeunload、フォームが送信されたときに常にその関数から確認ダイアログが表示されることです。これは私が望んでいるものではありません。フォームが送信されたときにユーザーに確認ダイアログが表示されるのではなく、フォームが送信された後、その後ページを離れようとした場合にのみ表示されます。

HTML:

<form id="myform" method="post" action="" onsubmit="formSubmitted();">
    <button type="submit" onclick="return checkForm();">submit form</button>
</form>

Javascript:

formSubmittedFlag = 0;

function checkForm()
{
    ...

    if(...)
    {
        return true;
    }
    else
    {
        return false;
    }
}


function formSubmitted()
{
    formSubmittedFlag = 1;
}



window.onbeforeunload = function()
{
    if(formSubmittedFlag == 1)
    {
        return "Are you sure you want to leave the page?";
    }
}

私が望んでいることを達成する方法はありますか?

4

2 に答える 2

2

フォームの組み込みアクションではなく、AJAX を使用してフォームを送信します。jQuery Form Pluginが役立つ場合があります。

于 2013-02-28T00:52:17.713 に答える
1

formSubmittedの内容を次のように置き換えます。

sessionStorage.formSubmittedFlag=true;
notReloaded=true;

そして、window.onbeforeunloadの内容を次のように置き換えます。

    if(sessionStorage.formSubmittedFlag===true&&notReloaded!=true)
        return 'do you want to leave?';
于 2013-02-28T00:57:11.310 に答える