2013-05-12 100 views
0

我對jquery很新,所以請耐心等待。我目前正在循環訪問一組表單元素,並試圖選擇一個特定的表單元素並對其進行處理。我遇到了一些麻煩,只是無法弄清楚這一點。我的下面的代碼循環遍歷所有的表單元素,我試圖用一個郵編代碼作爲輸入字段的目標,並使用它進行一些特殊的郵政編碼驗證。除了首先打印郵政編碼驗證(即使它是第三個輸入元素)並驗證它,然後再通過所有其他表單元素並再次驗證郵政編碼。我將如何防止a)郵政編碼驗證被擊中兩次,b)郵政編碼不是第一個被驗證的輸入元素,而是第三個輸入元素。jquery通過元素循環並選擇特定的一個

$("#homeForm :input").each(function(){ 

    if($("#zipCode").val().length == 0){ 
    //do some zip code validation 
    } 

    if($(this).val().length == 0 && $(this).is(":visible")){    
    //do some regular validation 
    }  

}); 

我的HTML是在這裏:

<form id="homeForm> 
    <input type="text" name="fullName" id="fullName" /> 
    <input type="text" name="homePhone" id="homePhone" /> 
    <input type="text" name="zipCode" id="zipCode" /> 
    <input type="text" name="age" id="age" /> 
    <input type="text" name="homeTown" id="homeTown" /> 
</form> 

新手在這裏和任何幫助是極大的讚賞。

+0

向我們展示HTML – TwiNight 2013-05-12 00:15:10

+0

應該不是'if(this.id =='zipCode'&&!this.value.length)',因爲zipcode元素可能是表單的一部分並且已被迭代,否則您在每次迭代中驗證郵政編碼元素。 – adeneo 2013-05-12 00:16:40

+0

抱歉應該添加html。更新了我的問題 – 2013-05-12 00:20:43

回答

2
$("#homeForm input").each(function(){ 
    if (!this.value.length) { 
     if (this.id == 'zipCode') { 
      //do some zip code validation 
     }else if ($(this).is(":visible")) { 
      //do some regular validation 
     }  
    } 
}); 

這防止:

a)該郵政編碼驗證被擊中兩次並且不是

B)郵政編碼所述第一輸入元件驗證,而是作爲第三。當你沒有輸入任何東西時,你當然會意識到你只做了驗證,即元素值沒有長度(你正在檢查長度是否爲零),所以我可能會刪除不是(!)的上面的代碼可以反轉該功能,因爲您可能想在有輸入時運行驗證?

+0

感謝@adeno像一個魅力工作。對不起,但我真的失去了爲什麼這個工程。你可以擺脫的任何光線都會很棒。 – 2013-05-12 00:45:55

+0

它只是按順序遍歷所有輸入,首先檢查長度,然後檢查ID是否爲zipCode,如果是,那麼執行zipCode事件,如果不是,檢查它是否可見,然後執行常規事情。 – adeneo 2013-05-12 00:57:20