为什么我的提交事件没有被ASP.NET中的jQuery捕获?

时间:2009-04-02 16:23:22

标签: .net asp.net javascript jquery

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

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

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

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

谁能告诉我为什么?

3 个答案:

答案 0 :(得分:0)

您是否可能对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>

答案 1 :(得分:0)

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

所以这就是我所做的: 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;
            };
    });

这似乎有效。

答案 2 :(得分:-1)

我发现了问题。

当我点击某个按钮时,他们调用一个执行form.submit的所有javascript方法。这不是jQuery捕获的。

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

感谢所有人的帮助。