如何在提交表格后(即处理时)阻止用户离开页面?

时间:2013-02-28 00:42:02

标签: javascript

这里有很多类似的问题,但我没有找到任何与阻止用户在提交表单后离开页面的处理(即在处理时)。

我的网站上有一个页面,其中包含需要很长时间才能提交的表单(有时长达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?";
    }
}

有没有办法完成我想要的东西?

2 个答案:

答案 0 :(得分:2)

使用AJAX而不是表单的内置操作提交表单。 jQuery Form Plugin可能会有所帮助。

答案 1 :(得分:1)

将formSubmitted的内容替换为:

sessionStorage.formSubmittedFlag=true;
notReloaded=true;

用以下内容替换window.onbeforeunload的内容:

    if(sessionStorage.formSubmittedFlag===true&&notReloaded!=true)
        return 'do you want to leave?';