2012-08-14 139 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>