2012-08-14 98 views
-1

我一直在与javascript的邪恶onbeforeunload函数在过去两天作战。我有一个功能在用户即将关闭页面时发出警告。 但是在页面关闭之前,我想使用javascripts .submit()提交表单。使用javascript提交表单

这是我的代码

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值没有定义,因此这将是错误的 出于某种原因,提交都不尽如人意。

------------------------编辑到我的问题------------------ ----------------------------- 即使用户通过关闭“X”来离开页面,我也想提交表单,按钮在他们的窗口。这就是为什么我有隐藏的按钮...看起来像人们误解我的问题。

+0

如果没有表格,然后提交正在使用的输入为什么类型?这可以通过输入类型按钮来完成。 JavaScript API中不存在名为'submit()'的函数。 – Amareswar 2012-08-14 18:04:59

+0

有一种形式。我只是没有将其包含在我的代码粘贴中。我想人们会认为这是一种形式。我将解决它以澄清 – tawheed 2012-08-14 18:06:44

+0

如果您对您期望发生的事情以及发生的事情有更具体的了解,这将有所帮助。如果您发布了jsfiddle,它也可能有所帮助。 – 2012-08-14 18:07:17

回答

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> 
+0

那么我需要第二个链接。即使用户按下浏览器上的关闭按钮,我也想保存表单。 – tawheed 2012-08-14 18:15:30

+0

我编辑了我的答案,你真的不能那样做。 – 2012-08-14 18:33:20

+0

你可以用JavaScript中的'onunload'方法吗? – tawheed 2012-08-14 18:41:14

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>