单击时禁用按钮

我有一个按钮控件。 用户点击后,点击事件应该触发,然后按钮应该被禁用。 我怎样才能做到这一点? 我可以选择使用JQuery或JavaScript或两者。

这是我的按钮声明:

 

在后面的按钮单击代码上,我添加了一个Response.Write()。 这应该执行,然后应该禁用该按钮

无论出于何种原因, HTML规范规定禁用的元素不应包含在POST请求中 。 因此,如果您使用JavaScript来禁用客户端onclick事件中的HTML元素,那么当浏览器组装POST请求时,将禁用输入元素,服务器将无法正确通知哪个元素引发了回发,并且赢了不要点击服务器端点击事件处理程序。

当您将UseSubmitBehavior属性设置为false时,ASP.NET将呈现类型为button的输入元素,而不是ASP.NET Button控件通常生成的类型为submit的常规输入。 这很重要,因为单击按钮元素不会触发浏览器的表单提交事件。

ASP.NET将在该按钮元素的onclick处理程序中呈现对__doPostBack()的客户端调用,而不是依赖于浏览器表单提交。 无论请求中的POST数据是什么,__ doPostBack都会显式提升回发。

由于回发是独立于浏览器提交事件而引发的,因此您将不再使用前面提到的HTML怪癖。 然后,您可以设置OnClientClick“this.disabled = true;”,它将呈现为“this.disabled = true; __doPostBack(’Button1’,”);”,并且事情将按预期工作。

添加OnClientClick =“this.disabled = true;” 到你的按钮。

如果您使用的是Asp.net Ajax,您可能需要查看使用PostBack Ritalin 。

你试过这个吗?

添加OnClientClick =“MyFunction();” 到你的.NET按钮。

然后在.aspx页脚本标签中添加以下JS函数:

  

这使浏览器有机会回发,然后禁用快速按钮。

在通过客户端脚本禁用按钮之前,需要注意回发。 这是ajax和输入框的常见问题。 禁用输入框可防止数据从浏览器发送,即使您在禁用时也可以看到其中的文本。 答案是你需要使用jquery来确保服务器端代码在被禁用之前先运行。

-Oisin

 // to disable this.setAttribute('disabled', true); // to enable this.removeAttribute('disabled'); 

这是一个跨浏览器的解决方案

身体标签“<”身体真的很酷的事件onBeforeunload =“buttonId.disabled = true;” “>”

此事件在表单提交之前触发,换句话说,您的数据将被正确提交。

使用“this.disabled = true”方法时,如果页面上有validation器,请确保在禁用控件之前检查页面是否有效。 如果validation失败,则无法在不重新加载页面的情况下重新启用控件。

 if (Page_IsValid) this.disabled = true; 
   

在源页面中添加脚本标记。 更改代码中按钮的ID。 您可以禁用该按钮,直到该过程完成执行。

你可以禁用它的服务器端

 Button1.Enabled = false;