从嵌套循环中断:SyntaxError:找不到标签

Break out from nested loop: SyntaxError: label not found

本文关键字:找不到 标签 SyntaxError 中断 嵌套循环      更新时间:2023-09-26

我有一个非常复杂的表单,它需要对其所有元素进行验证,因此从PHP加载此页面已经是一个沉重的负担。

客户希望对字段分组进行验证,这样,当一个分组至少为一行(x个字段)填写了内容时,验证就会通过。正因为如此,我编写了一个函数,当它找到第一行或输入的子组时,我想打断它,这样它就可以进入下一组验证。如果它在组中找不到合适的子组,它应该alert()。

在其他迭代中,我试图使用return来保释,但它还是进入了警报状态。因此,阅读So的帖子,我正在尝试一个标签,以在验证通过后立即退出。看看这些例子,我似乎在做别人建议的事情,但我仍然得到SyntaxError:标签找不到。

好吧,根据MDN文档,它不在我认为的范围内。我已经在层次结构中上下移动了标签,但太靠近嵌套函数使它在这里对我没有用处。

你会采取什么不同的做法?

function checkRows(section) {
  agents = ['one', 'two', 'three', 'four','five', 'six', 'seven', 'eight'];
  loop1:
  for (var key in agents) {
     innerElements = jQuery(":input[name^=" + section + "]." + agents[key]);
     if (innerElements.length > 0) {
       var checked = [];
       jQuery.each(innerElements, function(i, element) {
         console.log("element " + element + "; length=" + element.value.length);
         if (element.value.length > 0) {
           checked.push(element);
         };
         if (checked.length == i) {
           break loop1;
      }
       });     
     }    
  }
  alert("Please enter at least one set of values for " + section);
}

http://jsfiddle.net/sam452/yj3myafq/3/

您可以尝试使用$.each()jquery函数

"我们可以在特定的迭代中打破$.each()循环,方法是:回调函数返回false。返回非false与for循环中的continue语句;它将立即跳到下一次迭代。"

http://api.jquery.com/jquery.each/

还可以在for循环中调用checkrows()函数