-1

过去两天我一直在与 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”按钮离开页面,我也想提交表单。这就是我有隐藏按钮的原因......看起来人们误解了我的问题。

4

2 回答 2

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>
于 2012-08-14T18:11:28.563 回答
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>
于 2012-08-14T18:11:51.997 回答