好的,让我先说一下这个问题,我已经阅读了本网站上的所有文章,并尝试了大部分解决方案。
我有一个有服务器端事件的按钮。此服务器端事件具有(处理btnSave_click)。
我的第一次尝试当然是这样的。 :
btnSave.enable = false
这当然不够快。
然后我试了这个。 :
btnSave.Attributes.Add("onclick", "this.disabled=true;");
这个。 :
btnSave.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSave, Nothing) + ";")
这不起作用,当然我通过OnClientClick事件尝试了一堆不同的jquery和javascript。这也不起作用,但从我可以看到它是由于我也有服务器端事件发射的事实,我没有在逐步期间击中我的功能。正如你所看到的,我花了很多时间试图让它发挥作用。希望有人知道我在这里做错了什么。我所拥有的是一个非常简单的按钮和代码隐藏真的没什么奢侈。
这是我的按钮。 :
<asp:Button ID="btnSave" runat="server" Width="60px" Text="Save" Enabled="False"></asp:Button>
这是服务器端事件标头。 :
Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
再次提出任何想法都非常感激。感谢。
答案 0 :(得分:1)
这样的东西?
客户端:
var buttonPressed = false;
服务器:
btnSave.OnClientClick = "if (buttonPressed) return false else buttonPressed = true; return true;"
答案 1 :(得分:1)
这样的事情应该有效:
$('#yourButtonId').click(function() {
$(this).attr('disabled', 'disabled');
});
答案 2 :(得分:1)
当您单击按钮并使用javascript禁用它时,它在客户端和服务器端被禁用它不知道它在客户端被禁用,因为服务器端检查viewstate控件属性。如果你想在点击和回发后保持禁用,那么你必须在客户端和服务器上禁用它。
在客户端
$('#<%= btnSave.ClientID %>').click(function() {
this.disabled = true;
});
在服务器端
btnSave.enable = false
答案 3 :(得分:0)
这是更聪明的解决方案: 服务器:
<asp:Button ID="btnSave" runat="server" Width="60px"
Text="Save" Enabled="False" OnClientClick="return preventDblClick()" ></asp:Button>
客户端:
var dbl = 0;
function preventDblClick() {
if (dbl < 1) {
dbl += 1;
return true;
} else {
return false;
}
}