我有一个asp按钮。由于它是服务器端的,所以只能显示给已登录的用户,但我想让它运行一个JavaScript函数。似乎当它的runat="server"时,它总是调用PostBack事件。
我还有一个普通按钮(<input...
),它没有运行在服务器端,它可以正常工作...
我该如何使这个按钮仅运行JavaScript而不进行PostBack?
我有一个asp按钮。由于它是服务器端的,所以只能显示给已登录的用户,但我想让它运行一个JavaScript函数。似乎当它的runat="server"时,它总是调用PostBack事件。
我还有一个普通按钮(<input...
),它没有运行在服务器端,它可以正常工作...
我该如何使这个按钮仅运行JavaScript而不进行PostBack?
当 JavaScript 完成任务时,让它返回 false。
<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
YourButton.Attributes.Add("onclick", "return false");
或者<asp:button runat="server" ... OnClientClick="return false" />
<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>
asp:Button
生成为input type=submit
。如果你想要一个按钮不进行提交,但需要在服务器端控制该元素,请创建一个简单的HTML输入框,并使用属性type=button
和runat=server
。OnClientClick=return false
禁用了点击操作,它将不会在点击时执行任何操作,除非你创建一个函数,例如:function btnClick() {
// do stuff
return false;
}
function verifyField(){
if (document.getElementById("inputId").checked == "") {
alert("Fill the field");
return false;
}
}
<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verifyField()" />
OnClick
方法。 - user1773603此外,对于已接受的答案,您可以使用UseSubmitBehavior="false"。 MSDN
__doPostBack(
。 - IvanH您没有说明使用的.NET框架版本。
如果使用的是2.0或更高版本,则可以使用OnClientClick属性在按钮的onclick事件触发时执行JavaScript函数。
要防止服务器提交,只需从调用的JavaScript函数返回false
即可。
使用验证
在这个例子中,我使用了两个控件,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>
OnClientClick="return false"
确实有效。 - TylerH