2012-02-02 50 views
2

将表单无效,我想在浏览器控制台中打印一条消息。尝试使用live(),委托和绑定提交表单()

Folling代码绑定作品:

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

和作品,以及当我更换绑定的提交

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

但不工作时,我使用委托

$('body').delegate('form', 'submit', function() { 

甚至与现场没有成功:

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

形态没有动态地insertet。生活和代表不能工作的原因是什么?

编辑

我刚刚发现jquery.validate.min.js是造成问题。嗯,但我怎样才能防止我自己的形式事件被阻止?

+0

你使用的是什么版本的jQuery?你为什么要在身体上而不是在身体上活动? – 2012-02-02 15:38:57

+0

如果表单不是动态插入的,为什么不直接在表单元素上绑定事件? – ShankarSangoli 2012-02-02 15:41:52

+0

抱歉,错误的复制和粘贴,我更新了直播部分。我正在使用jquery 1.6.4 – iappwebdev 2012-02-02 15:42:16

回答

0

你将有另一个处理程序要么form元件上或form并且其防止了事件的传播的body,无论是由之间的祖先;

  1. 事件对象
  2. 从事件处理程序荷兰国际集团事件对象
  3. return false”上调用stopImmediatePropagation()上调用stopPropagation()

您需要找到该处理程序,并停止它。请记住,这可能是您启用的插件的工作。

+0

我刚发现jquery.validate.min.js导致了这个问题。嗯,但我怎样才能防止我自己的形式事件被阻止? – iappwebdev 2012-02-02 15:57:37

+0

@Simon。使用'unbind'去除它们。 – gdoron 2012-02-02 15:59:53

+0

@Simon:您的事件和由jquery.validate绑定的事件处理方式相同。正如gdoron所说,绕过jquery.validate绑定的唯一方法就是解除绑定这些事件。 – Matt 2012-02-02 16:09:46

0

我的猜测是,你从return false从一个回调,从而防止这种回调触发。

见本JSFiddle DEMO

+0

事实并非如此,之前没有其他事件绑定。 – iappwebdev 2012-02-02 15:45:57

+0

@Simon。你是否使用'on'和'.submit'删除了附加的事件? – gdoron 2012-02-02 15:48:03

+0

我一个接一个地尝试了它们,而不是在同一时间。 – iappwebdev 2012-02-02 15:50:19