代码之家  ›  专栏  ›  技术社区  ›  dkarzon Sven Grosen

如何禁用ASP按钮上的回发

  •  129
  • dkarzon Sven Grosen  · 技术社区  · 16 年前

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

    我还有一个普通的按钮( <input... >)未在服务器上运行,并且工作正常…

    如何使此按钮只运行javascript而不回发?

    12 回复  |  直到 7 年前
        1
  •  250
  •   womp    15 年前

    完成后让您的javascript返回false。

    <asp:button runat="server".... OnClientClick="myfunction(); return false;" />
    
        2
  •  34
  •   Phiter    9 年前
    YourButton.Attributes.Add("onclick", "return false");
    

    <asp:button runat="server" ... OnClientClick="return false" />
    
        3
  •  13
  •   Rameez    11 年前

    您可以使用jquery单击操作并使用 以前的默认值() 避免回发的功能

    <asp:button ID="btnMyButton" runat="server" Text="MyButton" />
    
    
    $("#btnMyButton").click(function (e) {
    // some actions here
     e.preventDefault();
    }
    
        4
  •  8
  •   Ramakrishnankt    14 年前

    考虑一下这个。

    <script type="text/javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
    function BeginRequest(sender, e) {
        e.get_postBackElement().disabled = true;
    
    }
         </script>
    
        5
  •  6
  •   Neil Williams    11 年前

    其他人是对的,你需要你的回调来返回false;但是我想补充一点,通过设置onclick来做这件事是一种丑陋的老方法。我建议阅读 unobtrusive javascript . 使用类似的库 jQuery 可以使您的生活更轻松,HTML与您的javascript(和jquery)的耦合更少 supported by Microsoft 现在!)

        6
  •  4
  •   Divyang Desai Jonny B'Good    8 年前

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

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

    function btnClick() {
        // do stuff
        return false;
    }
    
        7
  •  3
  •   OtisAardvark    16 年前

    你没有说你使用的是.NET框架的哪个版本。

    如果您使用的是2.0版或更高版本,则可以在引发按钮的onclick事件时使用onclientclick属性来执行javascript函数。

    要防止服务器回发发生,只需返回 false 来自被调用的javascript函数。

        8
  •  2
  •   Arbejdsglæde    12 年前

    此外,对于接受的答案,您可以使用useSubmitBehavior=“false” MSDN

        9
  •  2
  •   Richard Slater    9 年前

    在我的例子中,我解决了在onclientclick中添加返回:

    代码落后

    function verify(){
      if (document.getElementById("idName").checked == "") {
        alert("Fill the field");
        return false;
      }
    }
    

    设计表面

    <asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" />
    
        10
  •  2
  •   Elvia Soto    9 年前

    您可以使用代码:

    <asp:Button ID="Button2" runat="server"
         Text="Pulsa"
         OnClientClick="this.disabled=true"
         UseSubmitBehavior="False"/>

    如果NE提交

    ...
    <form id="form1" runat="server" onsubmit="deshabilita()">
    ...
    <script type="text/javascript">
        function deshabilita()
        {
            var btn = "<%= Button1.ClientID %>";
            if (confirm("Confirme postback"))
            {
                document.getElementById(btn).disabled = true;
                return true;
            }
            return false;
        }
    </script>
        11
  •  2
  •   Raviteja    8 年前

    带验证

    在这个例子中,我使用了两个控件, ddl txtbox ,有一个快乐的编码

     asp:ScriptManager ID="script1" runat="server" /asp:ScriptManager
    
        asp:UpdatePanel ID="Panel1" runat="server"
           ContentTemplate
    
    // ASP BUTTON
    asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="return Valid()" OnClick="btnSave_Click"
    
    
       /ContentTemplate    
        /asp:UpdatePanel    
    
      <script type="text/javascript">
            function Valid() {
    
                if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val() == 0) {
                    alert("Please select YOUR TEXT");
                    $("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                    return false;
                }
    
                if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val().length == 0) {
                    alert("Please Type YOUR TEXT");
                    $("ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                    return false;
                }
                return true;
            }
    </script>
    
        12
  •  1
  •   Vikas    7 年前

    您可以使用jquery

    <asp:Button runat="server" ID="btnID" />
    

    胜过jQuery

    $("#btnID").click(function(e){e.preventDefault();})
    
    推荐文章