2014-07-24 53 views
0

首先,我是Web表單和JavaScript的新手,我花了兩天的時間搜索不到任何結果。我試圖在用戶退出頁面之前詢問用戶是否要保存他們輸入的數據。我有一個文本框,告訴是否有任何輸入已經執行,應該觸發javascript if語句。如果用戶使用頁面中包含的控件從頁面移開,我的代碼正在工作。當他們點擊右上角的X或選擇文件/退出時它不起作用。以下是我的代碼。Window.onbeforeunload和__dopostback不能正確協同工作

 <script type="text/javascript" > 
    var needToConfirm = "False"; 
    var hdnNeedToConfirm = "" 
    window.onbeforeunload = confirmExit; 
    function confirmExit() { 
     __doPostBack('<%= Page.Master.FindControl("MainContent").FindControl("PADForm").ClientID %>', ''); 
     __doPostBack('<%= Page.Master.FindControl("MainContent").FindControl("HiddenPanel").ClientID %>', ''); 
     hdnNeedToConfirm = document.getElementById('<%= Page.Master.FindControl("MainContent").FindControl("HdnNeedToConfirm").ClientID %>'); 
     if (hdnNeedToConfirm != null) 
      needToConfirm = hdnNeedToConfirm.value; 
     else 
      needToConfirm = "False"; 
     if (needToConfirm == "True") 
      window.open("SaveOrLose.aspx"); 
    } 
</script> 

我在上面的兩個代碼__doPostBack語句,但是回發沒有實際發生後才代碼的其餘部分。這意味着if語句失敗,因此Save表單從不打開。

我會很感激任何幫助,你可以給!

回答

0

您不應該在代碼中調用__doPostBack()

這是一個函數,應該僅由ASP.NET Web窗體調用來調用服務器端事件/代碼。

如果您檢查__doPostBack()函數的實現,您會注意到提交了一個HTML表單。

因此,您的程序將永遠達不到第二次調用__doPostBack()的地步。

+0

我把它們放進去以捕捉X和File/Exit事件。我以前使用代碼隱藏來打開保存表單。如果使用了X或文件/退出,那麼我有文本框不會激活ontextchanged事件,因此正在嘗試其他路由。謝謝!! – dastokesh

+0

你可以(用僞代碼)解釋當視圖關閉時你想完成什麼。 –

+0

如果輸入發生的形式爲 – dastokesh

相關問題