2011-07-19 65 views
2

我有一个Drupal的形式,即使jQuery submit()函数返回false,Drupal表单也会继续提交;

<form action="/forms/contact.html" accept-charset="UTF-8" method="post" id="webform-client-form-1148-1" class="webform-client-form" enctype="multipart/form-data"> 

具有以下提交,

<input type="submit" name="op" id="edit-submit-1" value="Submit" class="form-submit" /> 

包含表单的页面加载以下jQuery的内联,

jQuery("#webform-client-form-1148-1").submit(function(){return false;}); 

不管我怎么努力,提交按钮总是提交表单。由于我返回false,我希望表单忽略提交过程并完全取消。

为什么表单继续提交,即使表单的submit()函数返回'return false'?

这是一个简单的例子,我在我的代码中强迫提交表单时总是返回false,因此不应该提交。

回答

3

不久前我回答了一个类似的问题。检查Stop form from submitting when searching with jQuery

解决方法是应用event.preventDefault()事件方法。不要忘记通过该功能传递事件。

例如

jQuery("#webform-client-form-1148-1").submit(function(event){ 
    event.preventDefault(); 
}); 
+1

根据调试和跟踪到jQuery的代码路径,调用'return false'应该在jQuery核心代码中调用event.preventDefault下游。这里是一个到在线发布的帖子的链接,该帖子也涉及这个主题,http://css-tricks.com/6809-return-false-and-prevent-default/。 –

+0

好点Mike!该链接提到以下内容,其中涉及更多细节http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/,非常棒的阅读! –

1

删除input type="submit"

<input type="button" name="op" id="edit-submit-1" value="Submit" class="form-submit" /> 

和尝试这个..

$('#edit-submit-1').click(function(){ 
     jQuery("#webform-client-form-1148-1").submit(function(){return false;}); 

}); 

,如果你不想在所有提交表单,那么你可以使用unbind()die()

你也可以使用event.preventDefault(); 来防止表单提交的默认操作。

希望这些替代方法可以帮助你。

相关问题