我有一個非常複雜的表單,它需要對所有元素進行驗證,所以從PHP加載這個頁面已經有很大的負擔。從嵌套循環中分離出來:SyntaxError:找不到標籤
客戶希望對字段分組進行驗證,以便在分組有至少一行填寫滿足驗證通過的一行(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/
'break'聲明不會離開函數離開它。'loop1'標籤與'break'不同。 – Pointy
我會做什麼不同:首先,我不會在數組中使用'for ... in'循環,我不會將所有變量都作爲全局變量使用,並且最後一個條件似乎不需要... etc – adeneo
另外一般來說,使用'for ... in'來迭代數組被認爲是一個糟糕的想法。您可以在Array原型上使用'.forEach()'函數,或者在數字索引中使用簡單的'for'循環。 – Pointy