如果没有值,jQueryvalidation忽略自定义validation规则

我正在使用jQuery Validator插件。 一切都很完美,我想做最后的调整。 我只是找不到正确的组合。

我有一个名为“phone”的文本输入。 如果没有输入任何值,我想忽略所有规则 – 只留下输入。 目前,如果我关注,然后聚焦(不输入值)输入被validation,我的UI用我的有效标记更新。 哪个,没关系,但理想情况下,我想单独留下输入。 仅validation是否存在值。 我必须在自定义方法中返回true / false,否则它总是无效的。

不知道我能做什么。 感谢您的时间!

HTML

 

这是我输入的规则:

JavaScript的

 .... 'phone': { 'required': { 'depends': function(element) { return $('#textOptIn').is(':checked'); } }, 'hasValidPhoneNumber': true }, .... 

这是我的自定义方法:

JavaScript的

 $.validator.addMethod('hasValidPhoneNumber', function(value, element) { if (value === '' || value.replace(/ /g, '') === '(###)###-####') { return true; } else { return isValidPhoneNumber(value); // } }, messages.invalidPhoneNumber); function isValidPhoneNumber(phoneNumber) { var pattern = /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/; return pattern.test(phoneNumber); } 

不要检查它是否为空,请使用this.optional(element) 。 它只是使字段可选。 换句话说,如果你把它留空,它根本就不会被评估。

 $.validator.addMethod('hasValidPhoneNumber', function(value, element) { if (this.optional(element) || value.replace(/ /g, '') === '(###)###-####') { return true; } else { return isValidPhoneNumber(value); // } }, messages.invalidPhoneNumber);