jQuery循环遍历表单元素并选择特定的id

Del*_*ung 2 jquery

目前我正在遍历我的表单元素并通过检查用户是否输入任何内容来验证它.除了我需要对特定字段使用不同的验证.具体来说,我需要验证是否有效的电话号码.这是我的代码.我循环遍历所有输入元素,但需要选择具有id phoneNumber的元素,并查看它是否是有效的电话号码.它根本没有达到条件,看看该属性是否是电话号码.任何帮助是极大的赞赏.

$("#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");
    }

});
Run Code Online (Sandbox Code Playgroud)

Lix*_*Lix 5

我认为您需要将条件语句更改为如下所示:

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

选择器id[phoneNumber]根本无效.我认为你将语法与另一个选择器混淆...如果你只想匹配phoneNumberID中的元素,你会使用这样的东西:

$("element[id='phoneNumber']")
Run Code Online (Sandbox Code Playgroud)

虽然这个例子可能有点奇怪,因为有一个特定的选择器来匹配元素的id.但是......众所周知 - 皮肤独角兽的方法不止一种:)


最后一点:你曾经习惯$(this).attr("id")提取id给定元素,实际上你可以简单地使用原生JavaScript来提取这样的属性:

this.id
Run Code Online (Sandbox Code Playgroud)

所以把它们放在一起就会产生这样的结果:

if(this.id == 'phoneNumber'){
  alert(placeholderText + " check phone number");
}
Run Code Online (Sandbox Code Playgroud)

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

  • 最好:`this.id =='phoneNumber'`. (5认同)
  • `$(this).attr("id")`是一个对象的创建和两个函数调用以及一个属性引用与`this.id`的对比,它是一个属性引用.很明显哪个更简单,更快捷.只有在代码或执行速度比不使用它时更快才能使用jQuery.仅仅因为你有jQuery并不意味着你应该忘记使用普通javascript的最简单的方法. (4认同)