使用javascript提交表单

时间:2012-08-14 18:00:43

标签: javascript forms javascript-events

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

2 个答案:

答案 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>