2013-05-10 34 views
2

目前我正在循环浏览我的表单元素并通过检查 来验证它是否有用户输入任何内容。除了我需要为特定字段使用不同的 验证。具体而言,我需要验证一个有效的 电话号码。这是我的代码。我遍历所有输入元素,但 需要挑出具有id phoneNumber的元素并查看它是否是有效的电话号码 。它只是不符合条件,看看 属性是否是电话号码。任何帮助是极大的赞赏。jQuery通过表单元素循环并选择特定的编号

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

    var placeholderText = $(this).attr("placeholder");       

    if($(this).val().length == 0){    
     alert(placeholderText.replace('*','') + ' field is required'); 
     $(this).focus(); 
     valid = false; 
     return false; 
    }  

    if($(this).attr("id['phoneNumber']")){ 
    alert(placeholderText + " check phone number"); 
    } 

}); 
+1

'ID [“phoneNumber的”]'不是有效的属性名称。 – 2013-05-10 21:13:50

回答

5

我认为你需要改变你的条件语句是这个样子:

if($(this).attr("id") == 'phoneNumber'){ 
    alert(placeholderText + " check phone number"); 
} 

的选择id[phoneNumber]是根本不成立。我想你混淆了另一种选择语法...如果你想只匹配在自己的ID有phoneNumber的元素,你可以使用这样的事情:

$("element[id='phoneNumber']") 

虽然这个例子可能有点陌生因为有一个特定的选择器来匹配元素的id。但..大家都知道 - 有对皮肤有麒麟:)


一旦最后要注意的不止一种方法:您使用$(this).attr("id")提取给定元素的id时候,其实你可以简单地使用本地JavaScript提取该属性是这样的:

this.id 

所以把所有的一起会导致这样的事情:

if(this.id == 'phoneNumber'){ 
    alert(placeholderText + " check phone number"); 
} 

这即使您在这个阶段没有真正感受到它,它肯定会提高代码的性能。一旦开始使用一些更复杂和更密集的JS应用程序,您将开始注意到这些改进。
(感谢David Thomas指出了这一点对我和对jfriend00说服我编辑我的答案:P)

+5

最好:'this.id =='phoneNumber''。 – 2013-05-10 21:15:08

+0

@dav - 为什么?你是从一些性能或优化的角度来说的吗?如果是这样,我认为它可能有点矫枉过正...在简单的情况下(我假设这是一个),真的不会有*​​那么多差异... – Lix 2013-05-10 21:16:14

+4

'$(this).attr(“id “)'是创建一个对象和两个函数调用,以及一个属性引用与作为一个属性引用的'this.id'。很清楚哪个更简单快捷。只有在代码或执行速度快于不使用时才应该使用jQuery。仅仅因为你有jQuery并不意味着人们应该忘记可以使用普通javascript的最简单方法。 – jfriend00 2013-05-10 21:22:35