我正在接管一个项目的现有分支程序,该项目的代码遍布各地,而且我很难用以下规则验证电话号码字段:
-Required -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”。如果我尝试验证所需的+电子邮件,那也是有效的。
我尝试过将自定义规则放在验证函数的上方和下面,我尝试过不使用规则(“add”)函数,而且似乎每个组合都没有。我很困惑。
有什么想法吗?谢谢一吨。
发布于 2011-01-06 20:50:16
因此,我不知道为什么该方法不返回消息,但它正在运行。但是,为了显示一条信息,你可以这样做:
$(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
https://stackoverflow.com/questions/4618690
复制相似问题