2013-05-12 160 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

相关问题