2

目前我正在遍历我的表单元素并通过检查用户是否输入任何内容来验证它。除了我需要对特定字段使用不同的验证。具体来说,我需要验证电话号码是否有效。这是我的代码。我正在遍历所有输入元素,但需要挑选出具有 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");
    }

});
4

1 回答 1

5

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

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

选择器id[phoneNumber]根本无效。我认为您将语法与另一个选择器混淆了...如果您只想匹配phoneNumber其 ID 中包含的元素,您将使用如下内容:

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

尽管该示例可能有点奇怪,因为有一个特定的选择器来匹配元素的 id。但是.. 众所周知 - 剥独角兽皮的方法不止一种 :)


最后一点:您曾经$(this).attr("id")提取id给定元素的属性,而实际上您可以简单地使用本机 JavaScript 来提取该属性,如下所示:

this.id

因此,将所有这些放在一起会导致这样的结果:

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

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

于 2013-05-10T21:13:38.367 回答