2

我试图在单击按钮后立即禁用它以防止双击。以下Javascript可以完成这项工作:

$(document).ready(function () {
    $("#<%=cmTest.ClientID %>").click(function () {
        $(this).attr("disabled", "disabled");
    });
});

这是我的按钮:

<asp:Button ID="cmTest" Text="Test" runat="server" />

这是我的VB:

Private Sub cmTest_Click(sender As Object, e As System.EventArgs) Handles cmTest.Click

    Threading.Thread.Sleep(5000)

End Sub

每当将 jQuery .click 事件分配给按钮时,客户端功能都会起作用,但服务器端事件永远不会运行。当我删除 jQuery 时,服务器端事件会执行。这几乎就像我分配onclick=javascript:DisableButton();return false;给按钮本身一样。有没有办法将该 Javascript 分配给按钮,同时还允许触发服务器端事件?

编辑:所以它并不完全像分配return false;给按钮,因为页面仍然回发。这样做return false;实际上取消了按钮的提交,这不是这里发生的事情。

4

4 回答 4

0

您还可以将可见性设置为 false。它与禁用按钮不太一样,但它具有功能,并且不会遇到无法单击禁用按钮的问题。

您甚至可以将其替换为加载图像。

于 2012-07-20T13:38:11.133 回答
0

禁用的表单元素不包含在帖子中。

因此,您的事件会在元素作为请求发送之前禁用该元素,从而将其隐藏在 ASP.Net 中。

于 2012-07-20T13:16:17.160 回答
0

它不会执行,因为您禁用了该按钮。而不是禁用,您可能应该更改按钮的外观和感觉(应用不同的 CSS),以便用户感觉它已被禁用。将会话变量设置为某个值作为按钮单击事件的第一行。并且每次检查它是否已经设置,然后不要执行代码。因此,您可以防止双重提交。

于 2012-07-20T13:16:50.377 回答
0

将以下内容添加到您的表单元素

onsubmit="$(':submit').attr('disabled', 'true');"

如果您有超过 1 个提交按钮,则必须使其更加明确。

于 2012-07-20T13:12:08.883 回答