Jquery javascript事件函数如何阻止服务器端事件函数(单击按钮)
如果我有一个.aspx页面,其中有一个名为“btnProcess”的按钮:Jquery javascript事件函数如何阻止服务器端事件函数(单击按钮),jquery,.net,vb.net,client-side,server-side,Jquery,.net,Vb.net,Client Side,Server Side,如果我有一个.aspx页面,其中有一个名为“btnProcess”的按钮: asp:imagebutton id=“btnProcess”onmouseover=“src='siteart/addpayment2.gif”tabIndex=“13”onmouseout=“src='siteart/addpayment1.gif”Runat=“server”Width=“88”Height=“22”ImageUrl=“siteart/addpayment1.gif”alternatext=“添加付
asp:imagebutton id=“btnProcess”onmouseover=“src='siteart/addpayment2.gif”tabIndex=“13”onmouseout=“src='siteart/addpayment1.gif”Runat=“server”Width=“88”Height=“22”ImageUrl=“siteart/addpayment1.gif”alternatext=“添加付款按钮(CTRL+Plus(+))”
使用jQuery,如果我想在按下按钮时将函数链接到该按钮,我可以这样写:
$(document).ready(function () {
$('#btnProcess').click(function () {
return validateFields();
});
});
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
如果validateFields()
返回False
,则隐藏的代码:
Private Sub btnProcess_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnProcess.Click
不会开火。反之亦然,如果validateFields()
返回True
如果我注释掉返回validateFields()代码>代码隐藏将触发-如果我从未声明一个函数,该函数将在使用javascript单击时触发,那么代码隐藏将触发(这些场景是有意义的)
我的问题是(我可能问错了,提前道歉)为什么javascript button.click函数可以防止代码返回false时触发
我一直在学习将客户端和服务器端代码视为独立的逻辑片段,而不是像这样纠缠在一起
我要寻找的不仅仅是“仅仅因为”,这是我从一位同事那里得到的信息。ASP.NET回发是由一个名为\uu doPostBack
的JavaScript函数完成的,如果您查看页面的源代码,它看起来是这样的:
$(document).ready(function () {
$('#btnProcess').click(function () {
return validateFields();
});
});
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
注意:如果您曾经必须确定哪个控件导致回发,那么\u EVENTTARGET
名称应该很熟悉。在代码隐藏中,您将获得导致回发的控件的名称,如下所示:Page.Request.Params.get(“\uu EVENTTARGET”)代码>
如您所见,这将表单提交到服务器,这就是我们所说的回发
使用返回false
或event.preventDefault()
短路对\u doPostBack
的呼叫,您的回发就不会发生。从没想过我会有专业摔跤手回答我的问题……:P、 谢谢你,这是切中要害的。但有一个问题是,这段javascript代码是否插入了每个.aspx服务页面?哇,你是第一个“认出”我是摔跤手卡尔·安德森的人!LOL是的,它被插入到每个页面中,但是如果您使用的是母版页,那么它只是在母版页中,因为母版页创建了一个shell,内容页可以在其中运行。