2012-02-03 31 views
0

我有這樣一段代碼檢查與用戶,如果它是確定要離開頁面而不保存:自動回上DROPDOWNLIST問題

<script language="JavaScript"> 

window.onbeforeunload = !isPostBack && confirmExit; 

function isPostBack() { 
    return <%= Page.IsPostBack ? "true":"false" %> 
} 

function confirmExit() { 
    return "Some lame question for user. :)";  
} 
</script> 

有與具有dropDownLists,我必須的AutoPostBack設置爲頁面的問題真正。 AutoPostBack = true每次都會導致惱人的彈出窗口。 我已經想出瞭如何檢查postBack(謝謝谷歌),但現在我卡住了。

不應該有錯,我不知道什麼時候談到java腳本。我是窮人的桌面程序員,想要學習新東西。

+1

不知道確切的問題是在這裏有什麼,你是什麼意思惱人的彈出? confirmExit()方法不應該這樣做:'return confirm('Question?');' – greg84 2012-02-03 16:09:21

+0

他意味着重新發布之前發佈的表單的警告。 – 2012-02-03 16:11:53

+0

您不能僅僅依靠檢查頁面是否已經「PostBack:ed」。一旦發生回發,IsPostBack將爲真,但用戶仍然可以嘗試將頁面留給另一個頁面。您必須檢查頁面卸載的原因,即當用戶導致回發(控件上的javascript onclick事件處理程序導致回發)時,通過使用客戶端代碼設置客戶端變量。 – PHeiberg 2012-02-03 16:15:25

回答

1

window.onbeforeunload預計是一個函數,而不是一個布爾值。你可能已經預期這或類似:

if(<%= Page.IsPostBack ? "true":"false" %>) 
{ 
    window.onbeforeunload = function() 
    { 
     return "Some lame question for user. :)"; 
    }; 
} 

BTW,另一種方式來避免再次發佈警告會後重定向,得到的圖案(重定向到張貼到同一頁上,從內服務器上的事件處理程序)。

1

onbeforeunload應該存儲一個函數,而不是一個布爾值,因爲它是一個回調函數。

你可以這樣做:

window.onbeforeunload = function(){ 
    if(!isPostBack && confirmExit) { 
     //leave page 
    } 
}