2017-01-16 109 views
2

如何防止用戶雙擊按鈕?我一直在尋找互聯網,沒有在我的項目中爲我工作。 你能舉個例子嗎?防止雙擊asp.net按鈕ASP.NET C#

我有這並不起作用

<script type = "text/javascript"> 
function DisableButton() { 
    document.getElementById("<%=Button1.ClientID %>").disabled = true; 
} 
    window.onbeforeunload = DisableButton; 
</script> 
+0

雙擊是什麼意思?要防止用戶雙擊兩次提交按鈕? –

+0

您可以嘗試一下:http://tgynther.blogspot.com.br/2011/07/aspnet-prevent-button-double-click.html –

+2

爲什麼不在Button1中點擊「Button1.enabled = false」點擊事件而不是JavaScript函數..? –

回答

0

您可以在按鈕的單擊事件的「已啓用」屬性更改爲false。

如:

在C#代碼:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Button1.Enabled = false; 
} 

在aspx文件:

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
+1

回答這不會總是阻止雙擊,除非服務器端代碼在人們有機會再次點擊它之前快得令人難以置信。這是依靠服務器來禁用按鈕。 – KSib

+0

如果他在客戶端執行此操作,則服務器端在第二個帖子後將不記得該狀態。可以在會話中存儲變量,但我認爲這是一種矯枉過正的情況,如果在回發之前單擊一次或多次,則無關緊要,因爲事件將以任何方式執行一次。在它被執行後,你將不能再次執行相同的任務。 –

+0

在回發之前,您當然可以做兩次。這就是我所掌握的。在進入'Button1.Enabled = false'之前有一個長時間運行的過程,它會運行代碼兩次。目前的這個例子大部分時間都會工作,因爲幾乎沒有任何事情發生。 – KSib

3

試試這個

<asp:Button OnClientClick="disableClick(this)" OnClick="MyButtonOnClick" runat="server" UseSubmitBehavior="false" ID="MyButton" /> 

<script type="text/javascript"> 
    function disableClick(elem) { 
     elem.disabled = true; 
    } 
</script> 

您掛鉤到OnClientClick事件你通過埠tton到disableClick函數,然後該按鈕被設置爲禁用,因此無法再次單擊。

+0

我需要從按鈕的asp標籤中刪除OnClick,因爲我看到你沒有該事件,我明白它只是添加OnClientClick,如果我只添加該按鈕,它不會發送另一個表單,在一個簡而言之,按鈕不會做任何事情嗎? 發生在我的項目 – MichaelPth

+0

您仍然可以使用OnClick事件,因爲按鈕需要最初回發。我不知道你是如何使用按鈕的,因爲我沒有看到按鈕代碼的發佈,但你可能需要做一些我剛編輯好的代碼,以便它有效地工作。只需一秒鐘。 – KSib

+0

此解決方案通常不起作用。 「elem.disabled」立即取消當前回發 - 除了您更改提交行爲。見https://stackoverflow.com/a/21996413/2534462 – Fried

0

沒有其他答案真的幫助我,但是應用Junior Porfirio在評論中共享的鏈接中的代碼(http://tgynther.blogspot.com.br/2011/07/aspnet-prevent-button-double-click.html)最終爲我提供了我正在尋找的解決方案。

Button1.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(Button1, null) + ";"); 

我在Page_Load方法中添加了上面的代碼,它看起來像它的工作。該按鈕被禁用,回發仍然發生。

+0

請使用正確的格式,在'Button1'前放置四個空格,並刪除反引號:' – SteveFest

+0

完成。謝謝SteveFest。 –