如何禁用 asp 按钮上的回发 (System.Web.UI.WebControls.Button)

IT技术 .net asp.net javascript ajax
2021-01-16 19:45:06

我有一个 asp 按钮。它是服务器端,所以我只能向登录用户显示它,但我希望它运行一个 javascript 函数,而且当它是 runat="server" 时,它似乎总是调用回发事件。

我还有一个<input...没有在服务器上运行的常规按钮 ( >),它工作正常......

我怎样才能让这个按钮只运行 javascript 而不是回发?

6个回答

完成后让您的 javascript 返回 false。

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
确保添加'CausesValidation="false"',否则它会添加'WebForm_DoPostBackWithOptions' 和一堆额外的标记。
2021-03-16 19:45:06
在许多情况下,人们使用带有这种语法的 onclick 或 OnClientClick <asp:Button OnClientClick="myFunction()" /> 其中 myFunction() 返回 false 而这还不够 - 您必须使用 OnClientClick="return myFunction()"
2021-03-30 19:45:06
我必须添加 UseSubmitBehavior="False" 以及 ;return false
2021-04-01 19:45:06
这在 ASP.NET 4+ 中对我不起作用,但是康斯坦丁的回答只是OnClientClick="return false"有效。
2021-04-09 19:45:06
YourButton.Attributes.Add("onclick", "return false");

或者

<asp:button runat="server" ... OnClientClick="return false" />

您可以使用 jquery 单击操作并使用preventDefault()函数来避免回发

<asp:button ID="btnMyButton" runat="server" Text="MyButton" />


$("#btnMyButton").click(function (e) {
// some actions here
 e.preventDefault();
}
@ppumkin:preventDefault 是告诉其他事件侦听器您处理了此事件的好方法,这样他们就不必这样做了。我认为您的意思是 stopPropagation,它确实阻止了其他事件侦听器甚至听到该事件。
2021-03-13 19:45:06
这是一个优雅的答案,因为它允许您测试要禁用的条件。
2021-03-25 19:45:06
是啊啊啊啊。不。4 年后,我现在更加支持这一点。只是不要这样做。
2021-03-27 19:45:06
永远不要使用 preventDefault 因为它会停止依赖此事件的其他事件 -1
2021-04-08 19:45:06

考虑一下。

<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
    e.get_postBackElement().disabled = true;

}
     </script>

其他人是对的,您需要回调返回 false;但是我想补充一点,通过设置 onclick 是一种丑陋的旧做事方式。我建议阅读有关unobtrusive javascript 的内容使用像jQuery这样的库可以让你的生活更轻松,而且 HTML 与你的 javascript 的耦合更少(现在Microsoft 支持jQuery !)