如何禁用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
在这个例子中,我使用了两个控件, 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>
ASP.NET始终生成asp:Button
作为input type=submit
。
如果你想要一个不会发布post的button,但需要对服务器端的元素进行一些控制,可以使用属性type=button
和runat=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;