我有一个ASP.NET按钮,我需要在用户点击后禁用它,以防止重复点击。一旦提交完成,它必须再次启用。有人可以帮我吗?
这里提供了一种适用于 ASP.NET 按钮对象的解决方案。在前端,将以下属性添加到您的 asp:Button 定义中:
<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
在后端,在点击事件处理程序方法调用中,最好在finally块中的结尾添加以下代码。myButton.Enabled = true;
我找到了这个,并且它有效:
btnSave.Attributes.Add(
"onclick",
"this.disabled = true;" + ClientScript.GetPostBackEventReference(btnSave, null) + ";");
查看此链接,这是最简单的方式,并且不会禁用验证。
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>
要在页面进行服务器回发并且验证成功后禁用按钮,只需像页面一样禁用即可。
<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
this.disabled=true; this.value='Sending…';
this.style.backgroundcolor = '#abcdef';
来更改元素的样式方面。 - Shawn GavettUseSubmitBehavior="false"
,如果没有它,你的按钮点击将不会在代码后台触发。 - NickCssClass
属性,或者使用Style
属性进行内联样式。 - Shawn Gavett只需要为ASP按钮添加2个属性:
OnClientClick="this.disabled='true';" UseSubmitBehavior="false"
e.g.
<asp:Button ID="Button1" runat="server" Text="TEST" OnClientClick="this.disabled='true';" UseSubmitBehavior="false" CssClass="button-content btnwidth" OnClick="ServerSideMethod_Click" />
https://bytes.com/topic/asp-net/answers/918280-disable-button-click-prevent-multiple-postbacks
。该链接介绍了如何在ASP.NET中禁用按钮点击以防止多次提交。如果有人在意的话,我最初是找到了这篇文章,但我在页面上使用了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" />
<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>
在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>
我希望禁用按钮并调用回发,这样在按钮被禁用后仍然可以运行后台代码。
以下是如何从后台代码中附加:
btnProcess.Attributes.Add("onclick", " this.disabled = true; __doPostBack('btnProcess', ''); return false;")
然后在代码后台重新启用该按钮:
btnProcess.Enabled = True