如何在asp按钮上禁用回发

时间:2009-03-25 22:19:58

标签: .net asp.net javascript ajax

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

我还有一个常规按钮(<input...&gt;)没有在服务器上运行,而且工作正常......

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

13 个答案:

答案 0 :(得分:254)

完成后,您的javascript会返回false。

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />

答案 1 :(得分:36)

YourButton.Attributes.Add("onclick", "return false");

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

答案 2 :(得分:13)

您可以使用jquery点击操作并使用 preventDefault()功能来避免回发

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


$("#btnMyButton").click(function (e) {
// some actions here
 e.preventDefault();
}

答案 3 :(得分:8)

考虑一下。

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

}
     </script>

答案 4 :(得分:6)

其他人是正确的,你需要你的回调返回虚假;但是我想补充一点,通过设置onclick来做这件事是一种丑陋的旧方式。我建议阅读unobtrusive javascript。使用像jQuery这样的库可以让您的生活更轻松,而且HTML更少与您的javascript(以及jQuery的supported by Microsoft现在相关!)

答案 5 :(得分:4)

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

如果您停用执行OnClientClick=return false的点击操作,则除非您创建以下功能,否则它不会执行任何操作:

function btnClick() {
    // do stuff
    return false;
}

答案 6 :(得分:3)

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

如果您使用的是v2.0或更高版本,则可以在引发按钮的onclick事件时使用OnClientClick属性执行Javascript函数。

要防止服务器回发发生,您只需从被调用的JavaScript函数返回false

答案 7 :(得分:2)

另外,对于已接受的答案,您可以使用UseSubmitBehavior =“false” MSDN

答案 8 :(得分:2)

验证

在此示例中,我使用了两个控件ddltxtbox,编码很快

 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>

答案 9 :(得分:2)

就我而言,我解决了在onClientClick上添加return:

代码背后

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)

你可以使用代码:

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

如果提交

...
<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 :(得分:1)

您可以将JQuery用于此

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

比JQuery

$("#btnID").click(function(e){e.preventDefault();})

答案 12 :(得分:1)

您只需要从

返回false即可。

function jsFunction() {
  try {
    // Logic goes here
    return false; // true for postback and false for not postback
  } catch (e) {
    alert(e.message);
    return false;
  }
}
<asp:button runat="server" id="btnSubmit" OnClientClick="return jsFunction()" />

如下所示的JavaScript函数。

注意* :始终使用try-catch块并从catch块返回false,以防止javaScript函数中的错误计算。