繁体   English   中英

单击按钮禁用回发

[英]Disable postback at click on a button

我想在单击<asp:Button>后禁用回发。 我试图通过分配onclick="return false"来做到这一点,但在按钮中不起作用。

我怎样才能解决这个问题?

onClientClick="return false"

应该这样做! Onclick将引用 ASP.net 函数, onClientClick将在 HTML 控件上呈现为OnClick

它对我来说是这样的:

<body>

function myfunction() {
            return false;
        }

并在<head>

<asp:ImageButton ID="ImageButton1" runat="server" Height="52px" Width="58px" OnClientClick="myfunction(); return false;"/>

onclick用于连接您的服务器端事件。 您需要使用OnClientClick处理程序,例如<asp:button OnClientClick="return false;" /> <asp:button OnClientClick="return false;" />

用这个:-

  someID.Attributes.Add("onClick", "return false;");

我可以使用包含相关控件/元素的 UpdatePanel 来解决这个问题。

看到这些答案都没有帮助我。 我找到了解决方案。 您应该使用 HTML 按钮而不是使用 ASP.NET 按钮<asp:Button> 它运行良好,看起来与 ASP.NET 按钮完全一样。 要在服务器端提交 HTML 按钮,您可以使用属性onserverclick

<input id="btnState" class="AddButtons" runat="server" type="button" value="Add State" onclick="swap('one', 'two');" />

对于我的代码,我使用 JS 在服务器端做一些事情。 <asp:Button>不会停止回发,但正如我所说,HTML 按钮解决了我的问题。 如果这对您有帮助,请标记为答案或投票。

把你的 asp 按钮放在 Updatepanel 里面,比如

<asp:UpdatePanel ID="updPnl" runat="server" UpdateMode="Conditional" RenderMode="Block">
  <ContentTemplate>
    <asp:Button ID="btnID" runat="server"  OnClick="btn_Click" />
  </ContentTemplate>
</asp:UpdatePanel>

就我而言,上述解决方案都不适合我。

我想要的是首先在客户端调用一个函数,然后停止回发到服务器。 我的解决方案是在调用我的客户端函数之前简单地添加return关键字,即:

<asp:Button Runat=Server OnClientClick="return fyFunction;">

我的客户端脚本在最后一行代码中包含return false

通过使用 UseSubmitBehavior="false" 您可以禁用 onclick 的回发

既然您想在回发后执行此操作,我想您想防止双击回发? 在这种情况下,您最好拥有在客户端第一次单击后设置的某种状态维护变量。 作为一个简单的例子

var clicked = false;
function AllowOneClick(){
   if(!clicked){
      clicked = true;
      return true;
    }
 return false;
 }

然后,您将 OnClientClick 设置为在您的按钮上返回此方法结果,因此OnclientClick="return AllowOneClick()"这当然仅适用于一个按钮,但它应该为您提供总体思路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM