2010-08-19 79 views
8

问题 我想验证一个字段使用自定义验证程序我创建的本质上是一个电话号码的正则表达式如果该字段有一个值,否则它不会'因为它是可选的,所以需要验证。jQuery验证插件:验证可选字段

自定义的验证:

$.validator.addMethod('phone', function (value) { 
     return /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value); 
    }, 'Please enter a valid US phone number.'); 

规则:

phone: { 
    required: true, 
    phone: true 
}, 
fax: { 
    phone: true 
} 

我甚至试过:

phone: { 
    required: true, 
    phone: true 
}, 
fax: { 
    required: function(element){ 
    if (!$("#cf-fax").val()) { return true; } else { return false; } 
    } 
    phone: true 
} 

供参考,这是我想引用领域:

<input type="text" name="fax" class="optional" size="15" maxlength="14" id="cf-fax" /> 

任何帮助表示赞赏,因为我只是失落。 = \

回答

13

可以调用.optional()(验证插件内所定义的)类似这样的

$.validator.addMethod('phone', function (value, element) { 
    return this.optional(element) || /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value); 
}, 'Please enter a valid US phone number.'); 

这是验证插件,take a look at their additional methods here用于实施例中的标准方案。

+0

好神圣的废话,工作!谢谢你。我将深入讨论您提到的其他方法。 – creativetim 2010-08-19 21:54:37

+0

@creativetim - 欢迎:)并欢迎来到SO !,请务必通过答案左侧的复选标记接受解决您问题的答案:) – 2010-08-19 21:58:59

+0

It does!完成并完成。 – creativetim 2010-08-19 22:02:25