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

时间:2015-12-08 15:08:05

标签: javascript jquery validation label

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

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

在其他迭代中,我试图使用返回保释,但无论如何它继续发出警报。因此,阅读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/

1 个答案:

答案 0 :(得分:1)

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

  

“我们可以通过制作在特定的迭代中打破$ .each()循环   回调函数返回false。返回非假是与之相同   for循环中的continue语句;它会立即跳到   下一次迭代。“

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

你也可以调用for循环中的checkrows()函数