2015-12-08 49 views
0

我有一個非常複雜的表單,它需要對所有元素進行驗證,所以從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/

+0

'break'聲明不會離開函數離開它。'loop1'標籤與'break'不同。 – Pointy

+2

我會做什麼不同:首先,我不會在數組中使用'for ... in'循環,我不會將所有變量都作爲全局變量使用,並且最後一個條件似乎不需要... etc – adeneo

+1

另外一般來說,使用'for ... in'來迭代數組被認爲是一個糟糕的想法。您可以在Array原型上使用'.forEach()'函數,或者在數字索引中使用簡單的'for'循環。 – Pointy

回答

0

您可以嘗試使用$。每個()jQuery函數

"We can break the $.each() loop at a particular iteration by making the callback function return false. Returning non-false is the same as a continue statement in a for loop; it will skip immediately to the next iteration."

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

您也可以撥打checkrows()函數內部的for循環