在jQuery中的函数之间传递“return false”

时间:2011-12-01 23:57:07

标签: javascript jquery

我知道标题是一个糟糕的标题,除了一个例子,我不知道有什么方法可以解释这个:

$('form').submit(function(){
  $(this).find('input').each(function(){
    if($(this).hasClass('error'))
      return false;
  });
});

但是,“return false”返回带有false的“.each()”。如何将“传递”到“.submit()”?

5 个答案:

答案 0 :(得分:5)

如果您正在寻找具有类错误的表单中的任何输入,您可以执行以下操作:

return $(this).find('input.error').length == 0;

答案 1 :(得分:2)

简化它。看来如果你发现这个类的一个实例你想要返回false,可以这样做:

$('form').submit(function()
{
    return $(this).find('input').hasClass('error') == false;
});

您也可以使用NOT运算符,但选择器IMO看起来很难看。

答案 2 :(得分:1)

因为.each()方法调用回调函数,所以无法从.each()回调内部的提交返回。因此,您必须为返回值设置一个变量,然后稍后再返回。

$('form').submit(function(){
  var retVal = true;
  $(this).find('input').each(function(){
    if($(this).hasClass('error'))
      retVal = false;
      return false;
  });
  return(retVal);
});

你也可以通过让选择器引擎进行搜索来解决这个问题,而不是像.each()那样用自己来迭代:

$('form').submit(function(){
  if ($(this).find('input.error').length != 0) {
      return(false);
  }
});

或者更简洁一点:

$('form').submit(function(){
      return($(this).find('input.error').length == 0);
});

答案 3 :(得分:0)

在循环外声明一个变量,并在退出循环之前设置,然后返回变量的值:

$('form').submit(function(){
  var result = true;
  $(this).find('input').each(function(){
    if($(this).hasClass('error'))
      result = false;
      return false; // exit loop
  });
  return result;
});

答案 4 :(得分:0)

$('form').submit(function(){
  var allok = true;
  $(this).find('input').each(function(){
    if($(this).hasClass('error'))
      allok  =false;
  });
  return allok;
});