【问题标题】:Why is my submit event not being caught by jQuery in ASP.NET?为什么我的提交事件没有被 ASP.NET 中的 jQuery 捕获?
【发布时间】:2009-04-02 16:23:22
【问题描述】:

我在一个简单的 ASP.NET 页面上写了这个:

jQuery(document).ready(function() {
 jQuery("form").submit(function() {
   alert("kikoo");
   return false
  });
});

当我提交(通过单击按钮、链接等)时,我从未看到警告框。

asp.net 页面中是否有“绕过”提交的内容(我想到了 dopostback javascript 方法)

谁能告诉我为什么?

【问题讨论】:

  • 页面上是否有任何可能导致处理程序无法设置的 javascript 错误?
  • 此块在页面中的确切位置和时间运行?
  • 我遇到了同样的问题,jQuery 没有捕获 ASP.NET 表单上的提交事件,我怀疑这是由于 _DoPostback 架构,正如 Pitming 所建议的那样。令人沮丧的是,这里似乎没有人认真考虑过这一点。

标签: .net asp.net javascript jquery


【解决方案1】:

您是否对jQuery submit() 函数的用法感到困惑?

听起来您希望在页面加载时出现警报对话框,因为您认为提交功能实际上是在提交您的表单。但是根据您使用它的方式,submit() 函数只是将一个事件附加到您的表单,这样当您实际确实提交它时,您的函数就会运行。

要真正从您的代码中触发提交,您必须使用不带任何参数的 submit(),如下所示:

$("form").submit();

这是一个扩展示例,以 Mike C 的答案为基础:

<!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" xml:lang="en" lang="en">
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
    $(function() {
        $("form").submit(function() {
            alert("kikoo"); return false
        });
        // you could also chain this onto the end of the previous function
        $("form").submit();
    });
    </script>
</head>
<body>
    <form><input type="submit" /></form>
</body>
</html>

【讨论】:

  • OP 明确提到了激活提交的按钮,并且发布的代码中的警报是通过事件处理程序来实现的。
  • annakata:对不起,但我不明白你的回答。看来我的英语水平太低了。 Ryan:我不想提交表格。我正在尝试在提交表单时绑定一个行为。
  • 我很抱歉。我错过了“通过单击按钮”部分。我认为我的答案中的信息对于搜索的人仍然有用,所以我会保留它。
  • 根据原始海报,这是一个 ASP.NET 应用程序,所以你需要有
    ..
    并且可能有 来复制这个场景
【解决方案2】:

最后我发现 do postback 方法覆盖了我的处理程序(仍然不明白为什么)。

这就是我所做的: 1.我在一个JS函数中声明我的行为

function MyBehaviour()
{...}

2。然后我做了一个“经典”的 jQuery 绑定

jQuery(document).ready(function() {
    jQuery("form").submit(EncodeAllTxtControl);
});

3。然后在每个表单上,我都有 myu 行为,但保留已经声明的行为

jQuery("form").each(function() {
        var oldonSubmit = this.onsubmit;
        if (typeof oldonSubmit != 'function') {
            this.onsubmit = function() {
                MyBehaviour();
                return true;
            };
        }
        else
            this.onsubmit = function() {
                MyBehaviour();
                oldonSubmit();
                return true;
            };
    });

这似乎有效。

【讨论】:

    【解决方案3】:

    我发现了问题。

    当我单击某个按钮时,它们会调用一个执行 form.submit 的所有 javascript 方法。 jQuery 没有捕捉到这一点。

    我会纠正按钮的行为,它会正常工作。

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 2012-01-22
      • 1970-01-01
      相关资源
      最近更新 更多