2011-01-06 65 views
2

我正在接管一个项目的现有boondoggle,其代码遍布各处,而且我很难验证电话号码字段以下规则:难以在jQuery中验证美国电话号码 - 需要并需要PhoneUS

- 更换 -Conforms到美国的电话号码

我找遍了整个jQuery的网站,并尝试低于当前代码的多个实现....

标题代码:

<script> 
    $(document).ready(function(){ 
    $("#the_form").validate(); 
    }); 
    </script> 

     <script> 
    $(document).ready(function(){ 
    jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
    phone_number = phone_number.replace(/\s+/g, ""); 
    return this.optional(element) || phone_number.length > 9 && 
     phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
}, "Please specify a valid phone number"); 
    </script> 

    <script> 
    $("#col_5_row_1").rules("add", { 
phoneUS: true 
} 
}); 
    </script> 

输入代码:

<input type="text" title="Phone" class="required phoneUS" id="col_5_row_1" name="col_5_row_1"> 

这证实了 “必需的”,而不是 “phoneUS。”如果我尝试验证所需的+电子邮件,那也可以。

我试过把自定义规则放在验证函数的上面,在它下面,我试过没有规则(“添加”)函数,看似每个组合。我很难过。

任何想法?万分感谢。

+0

要包括phoneUS必须包括附加方法脚本:<脚本类型= “文本/ JavaScript的” SRC =“http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1 /additional-methods.js“> – 2013-04-13 22:23:25

回答

1

所以我不知道为什么该方法不会返回消息,但它正在运行。但是,为了显示一个消息,你可以做这样的事情:

$(document).ready(
    function() 
    { 
     $.validator.addMethod("phoneUS", 
      function(phone_number, element) 
      { 
       phone_number = phone_number.replace(/\s+/g, ""); 
       return this.optional(element) || phone_number.length > 9 && 
        phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
      }, 
      "Please specify a valid phone number"); 

     $("#the_form").validate(
     { 
      rules: { col_5_row_1: { required: true, phoneUS: true } }, 
      messages: { col_5_row_1: { required: "required", phoneUS: "US format" } } 
     }); 
    }); 

这里是一个工作的例子还有:

http://jsfiddle.net/GcATB/

编辑: 一个刚刚明白了我另一件事是,有是一个额外的方法文件,它是验证程序的扩展,在此处具有此方法和其他方法。你应该检查一下,而不是写你自己的phoneUS。

http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js

+0

我没有写我自己的PhoneUS;这是jQuery自己的网站上给出的例子。我会看看我是否可以修补一下。 – 2011-01-06 21:20:21