我有一个ASP.NET按钮,我需要禁用后,用户单击它,以防止双击。提交完成后,必须再次启用。谁能帮我这个?点击后禁用asp.net按钮,以防止双击
回答
你可以用javascript来做到这一点。在您的form
标记中,onsubmit="javascript:this.getElementById("submitButton").disabled='true';"
禁用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>
您可以使用客户端onclick事件要做到这一点:
yourButton.Attributes.Add("onclick", "this.disabled=true;");
我发现this,和它的作品:
btnSave.Attributes.Add(
"onclick",
"this.disabled = true;" + ClientScript.GetPostBackEventReference(btnSave, null) + ";");
什么是clientScript? – 2017-07-21 11:42:16
没有上述解决方案的工作我最终找到了最简单的方法。
button1.enabled = false
当你需要启用只是做到这一点。
button1.enabled = true
这是如何防止双击?它只会在请求完成后才被禁用,在此期间可以点击一堆。 – guanome 2012-06-01 14:23:35
使用jQuery:
$('form').submit(function(){
$(':submit', this).click(function() {
return false;
});
});
检查这个环节,最简单的方法,它不会禁用验证。
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>
要禁用按钮如果和后验证成功,就像在页面做一个服务器回传。
链接只有答案不欢迎堆栈溢出。 – hims056 2012-10-11 06:05:41
这适用于普通的html按钮。
<input id="Button1"
onclick="this.disabled='true';" type="button"
value="Submit" name="Button1"
runat="server" onserverclick="Button1_Click">
该按钮被禁用,直到回发完成,防止双击。
这是一个适用于asp.net按钮对象的解决方案。在前端,这些属性添加到您的ASP:按钮定义:
<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
在后端,在点击事件处理方法的调用,这个代码添加到末尾(最好是在finally块)
myButton.Enabled = true;
它不工作:( – 2014-04-14 16:59:31
我喜欢禁用按钮并调用回发,这样在禁用按钮后,仍然可以运行后面的代码。
这是我从代码附加背后:
btnProcess.Attributes.Add("onclick", " this.disabled = true; __doPostBack('btnProcess', ''); return false;")
然后重新启用背后的代码按钮:
btnProcess.Enabled = True
试试这个,它为我工作
<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”
<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>
<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>
如果你想防止双击由于响应缓慢的服务器端,然后这个代码工作正常:
<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
试着把Threading.Thread.Sleep(5000)放在_Click()事件在服务器上,您将看到该按钮在服务器处理单击事件时被禁用。
无需服务器端代码要么重新启用按钮!
什么,我需要完成您还可以添加'this.style.backgroundcolor =“#abcdef”完美工作;。'来改变元素的风格方面 – 2017-04-25 20:42:04
这工作完全只是想强调需要'UseSubmitBehavior =“false”',否则你的按钮点击不会在代码隐藏中触发。 – 2018-01-04 17:06:16
如果有人关心我发现这个职位最初,但我在网页上使用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.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" />
- 1. 防止双击asp.net按钮ASP.NET C#
- 2. ASP.NET防止双击
- 3. 禁用按钮后点击
- 4. Android - 防止按钮点击PopupWindow以外
- 5. 防止双击一个按钮与knockout.js
- 6. Javascript按钮,防止鼠标双击
- 7. 单击事件按钮5次点击后禁用按钮
- 8. 当点击时禁用asp.net按钮
- 9. 如何阻止asp.net按钮被双击?
- 10. 如何防止双击“点击”jquery
- 11. 点击使用jquery后禁用按钮
- 12. 防止按键点击按钮点击即使在vb6中
- 13. 如何禁用Drupal表单提交按钮以防止双击提交?
- 14. Android - 快速点击后,点击按钮的按钮停止
- 15. 后点击禁用提交按钮
- 16. 点击进入后禁用按钮as3
- 17. AngularJS如何禁用按钮后点击
- 18. 点击后禁用按钮功能
- 19. jQuery防止回发点击按钮
- 20. 防止页面刷新按钮点击
- 21. 点击时禁用按钮
- 22. 点击禁用按钮
- 23. 禁止重复按钮点击缓冲
- 24. 防止Silverlight的datagrid选择从点击按钮点击改变?
- 25. 单击按钮后禁用按钮
- 26. 防止双击HTML
- 27. 防止双击TButton
- 28. 防止用户点击单选按钮尝试完成后
- 29. Javascript阻止ASP.NET按钮点击
- 30. 禁用ASP.Net按钮点击,直到页面加载后
很简单button.enable =所需的代码完成后 – Dotnet 2011-03-04 04:21:34
假这是一个正常的回传或AJAX? – 2011-03-04 04:23:18
如果您不想通过按钮修复此问题,请参阅我的回答:http://stackoverflow.com/a/28844217/787757 – sparebytes 2015-03-05 15:27:20