如何在事件处理程序中停止提交表单?

时间:2014-02-26 12:53:36

标签: jquery html forms

我有一个动态表单,可以通过动态生成的链接提交。我还绑定了submit()事件处理程序来验证是否所有选择都被选中。如何在以下事件处理程序中停止表单提交?

HTML链接:

<a href="javascript:void(0);" onclick="$(this).closest('form').submit();">Get</a>

事件处理程序:

$('form').submit(function(e){   
   var $target = e.target;
   $($target).find('select').each(function(index, elem){
      if($(elem).val() === ''){
      return false; // this doesn't stop the form submission
      }
   });      
});

3 个答案:

答案 0 :(得分:1)

请尝试e.preventDefault()?

答案 1 :(得分:1)

使用jQuery提交表单时,传递给函数的参数称为事件对象:

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

在这种情况下,e就是那个对象。

此事件对象可用于防止基于刚刚发生的事件发生标准(默认)操作。为此,您可以致电:

e.preventDefault();

此外,

$($target).find('select').each(function(index, elem){
   if($(elem).val() === ''){
   return false; // this doesn't stop the form submission
   }
});

此代码块中的return语句根本不会影响表单的事件,因为它会在单次迭代中突破您的.each()匿名函数。

答案 2 :(得分:0)

试试这个,替换这一行

if($(elem).val() == '' || $(elem).val() == null )