过去两天,我一直在与javascript中的邪恶onbeforeunload函数进行斗争。我有一个功能,可以在用户关闭页面时发出警告。 但是在关闭页面之前,我想使用javascripts .submit()。
提交表单这是我的代码
function setPopUpWindow(submitForm){
window.onbeforeunload = function () {
if (submitForm == false ) {
//alert("It worked"); --This code gets called so I know it works
document.getElementById("CancelScripting").submit();
//return "Unsaved Data would be lost";
}
}
}
在我的html中我有两个按钮,一个是(应该)触发.submit()而另一个是忽略它。
<body>
<form action=tett.html id="popUpForm" method=POST>
<script>setPopUpWindow();</script>
<input type="submit" id="submit_button" onclick="setPopUpWindow(true);">
<input class=b1 type=submit id="CancelScripting" style="visibility:hidden" value="CancelScripting" >
</body>
未定义第二个输入的setPopWindow值,因此它将为false 由于某种原因,提交效果不佳。
------------------------编辑我的问题------------------- ---------------------------- 即使用户通过关闭窗口上的“X”按钮离开页面,我也想提交表单。这就是我有隐藏按钮的原因......看起来人们误解了我的问题。
答案 0 :(得分:1)
您唯一能做的就是询问用户是否真的要离开页面:
<head>
<script type="text/javascript">
var submitForm = false;
window.onbeforeunload = function () {
if(submitForm == false){
return 'You have an unfinished form ...';
}
}
function setPopUpWindow(type){
submitForm = true;
}
</script>
</head>
<body>
<form action="" method="post" name="SubmitForm" id="SubmitForm">
<input type="submit" id="submit_button" onclick="setPopUpWindow(true);">
</form>
</body>
答案 1 :(得分:0)
我认为您要做的是通过执行以下操作提交表单而不是按钮:
document.forms["formId"].submit();
其中formId
是表单的ID。
此外,我在代码中的任何地方都没有看到您的表单,但您的按钮应该位于表单标记内。
例如,它应该如下所示:
<body>
<script>setPopUpWindow();</script>
<form id="formId" action="" method="post">
<input type="submit" id="submit_button" onclick="setPopUpWindow(true);">
<input class=b1 type=submit id="CancelScripting" style="visibility:hidden" value="CancelScripting" >
</form>
</body>