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

How the javascript event function can prevent server side event function (button click)

提问人:em_ 提问时间:8/2/2013 更新时间:8/2/2013 访问量:2641

问:

比如说,如果我有一个.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" AlternateText="Add Payment Button (CTRL + Plus(+))"

使用 jQuery,如果我想在按下该按钮时将函数链接到该按钮,我可以编写如下内容:

$(document).ready(function () {
       $('#btnProcess').click(function () {
               return validateFields();
        });
});

如果返回,则代码隐藏:validateFields()False

Private Sub btnProcess_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnProcess.Click

不会开火。反之亦然,如果返回validateFields()True

如果我注释掉后面的代码将触发 - 如果我从未声明一个函数将在使用 javascript 单击时触发,则后面的代码将触发(这些场景是有道理的)return validateFields();

我的问题是(我可能问错了,提前抱歉)为什么 javascript button.click 函数可以防止后面的代码在返回 false 时触发?

我一直学会将客户端和服务器端代码视为单独的逻辑片段,它们实际上不会像这样交织在一起。

我正在寻找的东西不仅仅是“仅仅因为”,这是我从同事那里得到的。

jQuery .NET vb.net 客户端服务器

评论


答:

2赞 Karl Anderson 8/2/2013 #1

ASP.NET 回发是由一个名为 的 JavaScript 函数完成的,如果您查看页面的源代码,它看起来像这样:__doPostBack

function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

注意:如果您曾经必须确定哪个控件导致了回发,那么该名称应该看起来很熟悉。在代码隐藏中,你将获得导致回发的控件的名称,如下所示:__EVENTTARGETPage.Request.Params.Get("__EVENTTARGET");

正如你所看到的,这会将表单提交到服务器,这就是我们所说的回发。

使用或短路调用和回发不会发生。return false;event.preventDefault()__doPostBack

评论

0赞 em_ 8/2/2013
从没想过我会有一个职业摔跤手来回答我的问题...... :P,谢谢,这是直截了当的,直截了当的。但有一个问题,这个 javascript 片段是否插入到每个.aspx提供的页面中?
0赞 Karl Anderson 8/2/2013
哇,你是第一个“认出”我是摔跤手卡尔·安德森的人!LOL 是的,它入到每个页面中,但如果您使用的是母版页,那么它就在母版页中,因为它为内容页创建了要在其中运行的 shell。