这里有很多类似的问题,但我没有找到任何与阻止用户在提交表单后离开页面的处理(即在处理时)。
我的网站上有一个页面,其中包含需要很长时间才能提交的表单(有时长达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?";
}
}
有没有办法完成我想要的东西?
答案 0 :(得分:2)
使用AJAX而不是表单的内置操作提交表单。 jQuery Form Plugin可能会有所帮助。
答案 1 :(得分:1)
将formSubmitted的内容替换为:
sessionStorage.formSubmittedFlag=true;
notReloaded=true;
用以下内容替换window.onbeforeunload的内容:
if(sessionStorage.formSubmittedFlag===true&¬Reloaded!=true)
return 'do you want to leave?';