2012-03-10 60 views
0

* IE6限制按鈕點擊一次。 *
我有一個按鈕,應該單擊一次,並且在第一次單擊時,我需要運行幾個後端邏輯(操作),例如在數據庫中保存一些數據,發送電子郵件,執行一些日誌記錄,以及之後我需要將這些操作的成功重定向到其他頁面。 但我的按鈕的單擊事件後使用IE6限制按鈕點擊一次

btnMakeFO.Visible = false ;

,用戶仍然可以點擊次數不要超過兩次。
我也用了:

btnMakeFO.Enabled = false ;

,但它不是工作壓力太大。

我也用下面的按鈕的(btnMakeFO_Click)Click事件處理程序:

btnMakeFO.Attributes.Add("onclick", "this.disabled=true;" + Page.ClientScript.GetPostBackEventReference(btnMakeFO, "").ToString()); 

...我已經尋找關於這個問題有很多,但我無法找到定製我的問題的解決方案。
注意:我正在開發Windows 7 x-64位機器和IE8,這裏按鈕最多點擊兩次。在FireFox8中,它只被點擊一次。
但是在生產環境中有Windows 2003 Server,Internet Explorer 6,在這個服務器上,按鈕甚至可以被點擊兩次以上,即btnMakeFO按鈕可以連續點擊10到15次左右。
(生產服務器上的Internet Explorer 6無法升級,因爲較少的舊版應用程序在新版Internet Explorer中無法正常運行。)
我需要在明天之前儘早解決此問題。請儘早幫助我解決這個問題。

回答

1

順便說一句我已經使用了以下(我從Code Project找到),它工作得非常好,我對這個解決方案很滿意。

<asp:Button OnClick="btnMakeFO_Click" OnClientClick="clickOnce(this, 'ABC...')"> 

<script type="text/javascript"> 
function clickOnce(btn, msg) 
{ 
    // Test if we are doing a validation 
    if (typeof(Page_ClientValidate) == 'function') 
    { 
     // if we are doing a validation, return if it's false 
     if (Page_ClientValidate() == false) 
     { 
      return false; 
     } 
    } 

    // Ensure that the button is not of type "submit" 
    if (btn.getAttribute('type') == 'button') 
    { 
     // The msg attibute is absolutely optional 
     // msg will be the text of the button while it's disabled 
     if (!msg || (msg='undefined')) 
     { 
      msg = 'Saving.......'; 
     } 
     btn.value = msg; 
     // The magic :D 
     btn.disabled = true; 
    } 
    return true; 
} 
</script> 
0

javascript方法應該工作。

您正在從服務器端注入代碼,這可能具有挑戰性。在瀏覽器中運行應用程序和查看源代碼時,您仍然應該能夠看到結果。您應該看到JavaScript中的標籤,就像這樣:

<input type="submit" value="Submit" onclick="this.disabled=true" /> 

對於ASP.Net,您也可以嘗試,而不是從你的頁面代碼 - 它注入了OnClientClick的事件,你可以直接添加到HTML,背後。