加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在ASP.NET应用程序中使用jQuery捕获提交事件?

发布时间:2020-12-15 18:51:08 所属栏目:asp.Net 来源:网络整理
导读:我试图处理使用jQuery的表单元素的submit事件。 $("form").bind("submit",function() { alert("You are submitting!"); }); 这不会在表单提交时(作为回发的一部分,例如当我点击按钮或链接按钮时)触发。 有没有办法使这项工作?我可以附加到触发提交的单个元
我试图处理使用jQuery的表单元素的submit事件。
$("form").bind("submit",function() {
        alert("You are submitting!");
    });

这不会在表单提交时(作为回发的一部分,例如当我点击按钮或链接按钮时)触发。

有没有办法使这项工作?我可以附加到触发提交的单个元素的事件,但是这不太理想 – 有太多的可能性(例如,autopostback = true的下拉列表,键盘快捷键等)

更新:这是一个最小的测试用例 – 这是我的aspx页面的全部内容:

<%@ page language="vb" autoeventwireup="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:scriptmanager id="ScriptManager" runat="server" enablepartialrendering="true">
                <scripts>
                    <asp:scriptreference path="/Standard/Core/Javascript/Jquery.min.js" />
                </scripts>
            </asp:scriptmanager>
            <p>
                <asp:linkbutton id="TestButton" text="Click me!" runat="server" /></p>
        </div>
    </form>

    <script type="text/javascript">
        $(document).ready(function() {
            alert("Document ready.");
            $("form").submit(function() {
                alert("Submit detected.");
            });
        });
    </script>

</body>
</html>

我得到“文档准备”警报,但不是“提交检测到”,当点击链接按钮。

解决方法

感谢,@肯布朗宁和@russau指向我的劫持方向__doPostBack。
我看到了几种不同的方法:

>硬编码我自己的__doPostBack版本,并将其放在页面上,以便它覆盖标准版本。
> Overload Render在页面上,并注入我自己的自定义代码到现有的__doPostBack。
>利用Javascript的功能性和创建一个钩子添加功能到__doPostBack。

前两个似乎不受欢迎的原因(例如,假设在将来有人需要添加自己的功能到__doPostBack)所以我已经去了#3。

这个addToPostBack函数是一个常见的pre-jQuery技术的变体,我用来向window.onload添加函数,它工作得很好:

addToPostBack = function(func) {
    var old__doPostBack = __doPostBack;
    if (typeof __doPostBack != 'function') {
        __doPostBack = func;
    } else {
        __doPostBack = function(t,a) {
            if (func(t,a)) old__doPostBack(t,a);
        }
    }
};

$(document).ready(function() {
    alert("Document ready.");
    addToPostBack(function(t,a) {
        return confirm("Really?")
    });
});

编辑:更改addToPostBack,使

>它可以接受与__doPostBack相同的参数>正在添加的函数在__doPostBack之前发生>要添加的函数可以返回false以中止回发

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读