<script type="text/javascript">
var submit = 0;
function CheckDouble() {
if (++submit > 1) {
alert('This sometimes takes a few seconds - please be patient.');
return false;
}
}
</script>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Clicked" />
<asp:Button ID="Button2" runat="server" Text="Button2" />
</form>
Now here’s the short JavaScript snippet that will disable the button as soon as it is clicked so that when PostBack occurs the button cannot be clicked again.
<script type = "text/javascript">
function DisableButton() {
document.getElementById("<%=Button1.ClientID %>").disabled = true;
}
window.onbeforeunload = DisableButton;
</script>
The above script disables the ASP.Net Button as soon as the page is ready to do a PostBack or the ASP.Net form is submitted.
But in cases you might want to disable all Buttons and Submit Buttons on the page hence for such cases I have created another function which disables all Buttons and Submit buttons whenever there’s a PostBack or form submission
<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>
9条答案
按热度按时间7xzttuei1#
防止双击。请在aspx页面中添加以下代码。
p4tfgftt2#
此解决方案简单有效。在您的按钮上包含以下代码:
在您需要JavaScript的任何位置-例如,在页面底部:
2nbm6dog3#
上面的大多数建议对我都不起作用,唯一起作用的是tezzo的以下建议:
更简单的是,不要在代码隐藏中使用上面的代码,只需使用以下代码:
**使用提交行为=“假”**是键。
vsmadaxz4#
可以使用以下代码防止双击:
因此,您可以使用
btnSave_Click
来调用API。通常我的
Page
中有很多Validators
:设置Validator.SetFocusOnError = True
如果验证失败,我可以运行此代码重新启用保存按钮。bvn4nwqk5#
这是我发现在所有情况下都有效的一个。
f45qwnt86#
防止双击。请在您的aspx页面中添加以下代码
k10s72fa7#
一开始我的解决方案是这样的:
如果不使用setTimeout,则按钮将立即被禁用,然后不会触发OnClick事件。这种方法的缺点是,如果某些验证失败或发生某些错误,则保存按钮将不再可用。
所以我不认为禁用按钮是一个很好的解决方案,并想出了另一个解决方案:
但是我的同事指出,如果后期处理很慢,在后期处理完成之前,用户仍然可以通过leave-enter-click按钮进行双回发,所以我又想出了另外两个解决方案:
1.在提交表单之前从客户端运行验证,但如果您的页面包含多个ValidationGroup,则需要多次调用下面的Page_ClientValidate(),并传入ValidationGroup参数:例如,页面_客户端验证(“组1”):
1.由于ASP.NET在一个页面中只有一个表单(而不是ASP.NET MVC),我们也可以让表单的onsubmit客户端事件拦截双击:
我将要求QA测试这两种方法(后期编辑:QA已经证明使用这种方法是非常危险的,请参考我下面的评论以了解详细信息)。
blpfk2vs8#
试试这个方法,它是一个有效的解决方案:
对于所有浏览器,包括不支持js的Opera移动的浏览器,意味着您的表单不会在该类型的浏览器中被阻止。
在Page_load()方法中添加以下内容:
rhfm7lfc9#
这对我也有效
添加(“onclick”,“if(类型(页面客户端验证)=== '函数' &&!页面客户端验证()){返回false;}此.禁用=真;此.value =“正在运行...”;“+客户端脚本.获取回发后事件引用(绑定ID,空)+“;“);