代码之家  ›  专栏  ›  技术社区  ›  Prashant Lakhlani

使用时返回值jQuery.each每个()?

  •  34
  • Prashant Lakhlani  · 技术社区  · 14 年前

    如果我找到第一个空白文本框,我想返回false并从函数返回

    function validate(){
     $('input[type=text]').each(function(){
       if($(this).val() == "")
         return false;
    });
    }
    

    以上代码对我无效:( 有人能帮忙吗?

    3 回复  |  直到 12 年前
        1
  •  64
  •   Nick Craver    14 年前

    你跳出来了,但是从 内部的 循环,我将使用选择器进行特定的“无值”检查,如下所示:

    function validate(){
      if($('input[type=text][value=""]').length) return false;
    }
    

    那个 外部回路的结果:

    function validate() {
      var valid = true;
      $('input[type=text]').each(function(){
        if($(this).val() == "") //or a more complex check here
          return valid = false;
      });
      return valid;
    }
    
        2
  •  16
  •   T.J. Crowder    14 年前

    function validate(){
        var rv = true;
        $('input[type=text]').each(function(){
            if($(this).val() == "") {
                rv = false;   // Set flag
                return false; // Stop iterating
            }
        });
        return rv;
    }
    

    假设你想回来 true 如果你找不到的话。

    你可能会发现这是一种你不想使用的情况 each 完全:

    function validate(){
        var inputs = $('input[type=text]');
        var index;
        while (index = inputs.length - 1; index >= 0; --index) {
            if (inputs[index].value == "") { // Or $(inputs[index]).val() == "" if you prefer
                return false;
            }
        }
        // (Presumably return something here, though you weren't in your example)
    }
    
        3
  •  0
  •   Mr.Hunt Жорик Пургидзе    6 年前

    我想在现有的答案中添加一些东西来澄清 $(selector).each 为什么它不尊重OP代码中的return false。

    return 关键字内 $(选择器)。每个 return false break for/while 循环。返回非false与 continue for 循环;它将立即跳到下一个迭代。 Source

    undefined 对你来说。 您可以选择在外部使用var $.each