jQuery验证器插件:验证可选字段

cre*_*tim 8 validation jquery jquery-plugins jquery-validate

问题 我想使用我创建的自定义验证器验证字段,如果字段有值,则基本上是电话号码的正则表达式,否则不需要验证,因为它是可选的.

自定义验证器:

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

规则:

 phone: {
  required: true,
  phone: true
 },
 fax: {
  phone: true
 }
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过:

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

作为参考,这是我试图引用的字段:

<input type="text" name="fax" class="optional" size="15" maxlength="14" id="cf-fax" />
Run Code Online (Sandbox Code Playgroud)

任何帮助都表示赞赏,因为我很遗憾.= \

Nic*_*ver 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.');
Run Code Online (Sandbox Code Playgroud)

这是验证插件的标准方案,请在此处查看其他方法的示例.