Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery javascript事件函数如何阻止服务器端事件函数(单击按钮)_Jquery_.net_Vb.net_Client Side_Server Side - Fatal编程技术网

Jquery javascript事件函数如何阻止服务器端事件函数(单击按钮)

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=“添加付

如果我有一个.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=“添加付款按钮(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,内容页可以在其中运行。