如何在asp按钮上禁用回发

dka*_*zon 133 .net javascript asp.net ajax

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

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

如何让这个按钮只运行javascript而不是回发?

wom*_*omp 257

完成后,您的javascript返回false.

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
Run Code Online (Sandbox Code Playgroud)

  • 我不得不添加UseSubmitBehavior ="False"以及;返回false (16认同)
  • 在许多情况下,人们使用onclick或OnClientClick语法<asp:Button OnClientClick ="myFunction()"/>其中myFunction()返回false,这还不够 - 你必须使用OnClientClick ="return myFunction()" (14认同)
  • 确保添加'CausesValidation ="false"',否则它将添加'WebForm_DoPostBackWithOptions'和一堆额外的标记. (9认同)
  • @stinkbutt我已经尝试过了,但仍然无法正常工作。 (2认同)

Kon*_*kus 38

YourButton.Attributes.Add("onclick", "return false");
Run Code Online (Sandbox Code Playgroud)

要么

<asp:button runat="server" ... OnClientClick="return false" />
Run Code Online (Sandbox Code Playgroud)


Ram*_*eez 13

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

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


$("#btnMyButton").click(function (e) {
// some actions here
 e.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)


小智 8

考虑一下.

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

}
     </script>
Run Code Online (Sandbox Code Playgroud)


Nei*_*ams 6

其他人是正确的,你需要你的回调返回虚假; 但是我想补充一点,通过设置onclick来做这件事是一种丑陋的旧方式.我建议阅读有关不引人注目的javascript.使用像jQuery这样的库可以让你的生活变得更轻松,并且HTML更少地与你的javascript结合(现在微软支持 jQuery !)


小智 5

ASP.NET 始终生asp:Button成为input type=submit.
如果您想要一个不执行发布操作的按钮,但需要对服务器端的元素进行一些控制,请创建一个带有属性type=button和的简单 HTML 输入runat=server

如果您禁用单击操作OnClientClick=return false,则单击时不会执行任何操作,除非您创建如下函数:

function btnClick() {
    // do stuff
    return false;
}
Run Code Online (Sandbox Code Playgroud)