2011-03-04 111 views
31

我有一个ASP.NET按钮,我需要禁用后,用户单击它,以防止双击。提交完成后,必须再次启用。谁能帮我这个?点击后禁用asp.net按钮,以防止双击

+0

很简单button.enable =所需的代码完成后 – Dotnet 2011-03-04 04:21:34

+0

假这是一个正常的回传或AJAX? – 2011-03-04 04:23:18

+0

如果您不想通过按钮修复此问题,请参阅我的回答:http://stackoverflow.com/a/28844217/787757 – sparebytes 2015-03-05 15:27:20

回答

0

你可以用javascript来做到这一点。在您的form标记中,onsubmit="javascript:this.getElementById("submitButton").disabled='true';"

2

禁用OnClick事件上的按钮,然后在AJAX回调事件处理程序上重新启用。以下是我如何使用jQuery来做到这一点。

<script> 
$(document).ready(function() { 

    $('#buttonId').click(function() { 
     $(this).attr('disabled', 'disabled'); 
     callAjax(); 
    }); 

}); 

function callAjax() 
{ 
    $.ajax({ 
     url: 'ajax/test.html', 
     success: function(data) { 
     //enable button 
     $('#buttonId').removeAttr('disabled'); 

     } 
    }); 
} 
</script> 
3

您可以使用客户端onclick事件要做到这一点:

yourButton.Attributes.Add("onclick", "this.disabled=true;"); 
29

我发现this,和它的作品:

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

什么是clientScript? – 2017-07-21 11:42:16

-2

没有上述解决方案的工作我最终找到了最简单的方法。

button1.enabled = false 

当你需要启用只是做到这一点。

button1.enabled = true 
+6

这是如何防止双击?它只会在请求完成后才被禁用,在此期间可以点击一堆。 – guanome 2012-06-01 14:23:35

1

使用jQuery:

$('form').submit(function(){ 
    $(':submit', this).click(function() { 
     return false; 
    }); 
}); 
10

检查这个环节,最简单的方法,它不会禁用验证。

http://aspsnippets.com/Articles/Disable-Button-before-Page-PostBack-in-ASP.Net.aspx

如果你有例如,

<form id="form1" runat="server"> 
     <asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Clicked" /> 
    </form> 

然后你可以使用

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

要禁用按钮如果验证成功,就像在页面做一个服务器回传。

+0

链接只有答案不欢迎堆栈溢出。 – hims056 2012-10-11 06:05:41

0

这适用于普通的html按钮。

<input id="Button1" 
    onclick="this.disabled='true';" type="button" 
    value="Submit" name="Button1" 
    runat="server" onserverclick="Button1_Click"> 

该按钮被禁用,直到回发完成,防止双击。

21

这是一个适用于asp.net按钮对象的解决方案。在前端,这些属性添加到您的ASP:按钮定义:

<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" /> 

在后端,在点击事件处理方法的调用,这个代码添加到末尾(最好是在finally块)

myButton.Enabled = true; 
+3

它不工作:( – 2014-04-14 16:59:31

1

我喜欢禁用按钮并调用回发,这样在禁用按钮后,仍然可以运行后面的代码。

这是我从代码附加背后:

btnProcess.Attributes.Add("onclick", " this.disabled = true; __doPostBack('btnProcess', ''); return false;") 

然后重新启用背后的代码按钮:

btnProcess.Enabled = True 
1

试试这个,它为我工作

<asp:Button ID="button" runat="server" CssClass="normalButton" 
Text="Button" OnClick="Button_Click" ClientIDMode="Static" 
OnClientClick="this.disabled = true; setTimeout('enableButton()', 1500);" 
UseSubmitBehavior="False"/> 

Then

<script type="text/javascript"> 
function enableButton() { 
document.getElementById('button').disabled = false; 
} 
</script> 

您可以调整延迟时间“的setTimeout”

0
<script type = "text/javascript"> 
function DisableButtons() { 
    var inputs = document.getElementsByTagName("INPUT"); 
    for (var i in inputs) { 
     if (inputs[i].type == "button" || inputs[i].type == "submit") { 
      inputs[i].disabled = true; 
     } 
    } 
} 
window.onbeforeunload = DisableButtons; 
</script> 
3
<asp:Button ID="btnSend" runat="server" Text="Submit" OnClick="Button_Click"/> 

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

如果你想防止双击由于响应缓慢的服务器端,然后这个代码工作正常:

<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" /> 

试着把Threading.Thread.Sleep(5000)放在_Click()事件在服务器上,您将看到该按钮在服务器处理单击事件时被禁用。

无需服务器端代码要么重新启用按钮!

+0

什么,我需要完成您还可以添加'this.style.backgroundcolor =“#abcdef”完美工作;。'来改变元素的风格方面 – 2017-04-25 20:42:04

+0

这工作完全只是想强调需要'UseSubmitBehavior =“false”',否则你的按钮点击不会在代码隐藏中触发。 – 2018-01-04 17:06:16

0

如果有人关心我发现这个职位最初,但我在网页上使用ASP.NET的构建中验证。解决方案能够正常工作,但即使验证了该按钮,也可以禁用该按钮。您可以使用下面的代码来创建它,以便它只在页面验证通过时禁用该按钮。

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" OnClientClick=" if (Page_ClientValidate()) { this.value='Submitting..'; this.disabled=true; }" UseSubmitBehavior="false" /> 
0

此解决方案,如果你正在使用asp.net验证:

<script language="javascript" type="text/javascript"> 
function disableButton(sender,group) 
{ 
    Page_ClientValidate(group); 
    if (Page_IsValid) 
    { 
     sender.disabled = "disabled"; 
     __doPostBack(sender.name, ''); 
    } 
}</script> 

和更改按钮:

<asp:Button runat="server" ID="btnSendMessage" Text="Send" OnClick="btnSendMessage_OnClick" OnClientClick="disableButton(this,'theValidationGroup')" CausesValidation="true" ValidationGroup="theValidationGroup" />