如何禁用aspbutton回发

我有一个aspbutton。 这是服务器端,所以我只能显示它为login用户,但我希望它运行一个JavaScript函数,它似乎当runat =“服务器”它总是调用回发事件。

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

我怎样才能让这个button只运行JavaScript和不回发?

完成后,您的JavaScript返回false。

 <asp:button runat="server".... OnClientClick="myfunction(); return false;" /> 
 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(); } 

考虑这个。

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

其他人是正确的,你需要你的callback返回false; 但是我想补充一点,通过设置onclick来做这件事是一种丑陋的做事方式。 我build议阅读关于不显眼的JavaScript 。 使用像jQuery这样的库可以让你的生活更加轻松,而且HTML更less地耦合到你的javascript(而现在微软支持的 jQuery!)

你不会说你正在使用的.NET框架的版本。

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

所有你需要做的,以防止服务器回发发生是被调用的JavaScript函数返回false

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

在我的情况下,我解决了在onClientClick添加返回:

代码在后面

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

devise表面

 <asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" /> 

你可以使用代码:

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

通过validation

在这个例子中,我使用了两个控件, 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> 

ASP.NET始终生成asp:Button作为input type=submit
如果你想要一个不会发布post的button,但需要对服务器端的元素进行一些控制,可以使用属性type=buttonrunat=server创build一个简单的HTMLinput。

如果您禁用了执行OnClientClick=return false点击操作,那么除非您创build一个如下所示的函数,否则它不会执行任何操作:

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

可以使用别人提到的“return false”方法,或者将runat =“server”属性添加到普通button:

 <input type="button" runat="server" id="htmlButton" ...> 

然后,您可以在代码隐藏中设置HTMLbutton的可见性属性,例如:

 htmlButton.Visible = isLoggedIn;