尝试使用live(),delegate和bind()提交表单

时间:2012-02-02 15:37:18

标签: jquery forms submit bind live

如果表单无效,我想在浏览器控制台中打印一条消息。

绑定的Folling代码有效:

jQuery(document).ready(function () {
    $('form').bind('submit', function () {
        if ($j(this).valid() == false) {
            console.log("Warning: form not valid");
        };
    });
});
当我用提交

替换bind时,

也可以正常工作

$('form').submit(function () {

但是当我使用委托

时,它不起作用
$('body').delegate('form', 'submit', function () {

即使直播也没有成功:

$('form').live('submit', function () {

表单不是动态插入的。生活和委托不起作用的原因是什么?

修改

我刚刚发现jquery.validate.min.js导致了这个问题。嗯,但是如何防止我自己的表单事件被阻止?

2 个答案:

答案 0 :(得分:0)

我猜你从回调中return false因此会阻止此回调触发。

请参阅此JSFiddle DEMO

答案 1 :(得分:0)

您将在form元素上使用另一个处理程序,或者在formbody之间使用另一个处理程序阻止事件的传播,或者通过;

  1. 在事件对象上调用stopPropagation()
  2. 在事件对象上调用stopImmediatePropagation()
  3. return false来自事件处理程序。
  4. 你需要找到那个处理程序,并阻止它这样做。请记住,这可能是您启用的插件的工作。