jQuery Validate ignore custom validation rule if no value
我正在使用jQuery Validator插件。 一切都很完美,我想做最后的调整。 我只是找不到正确的组合。
我有一个名为"phone"的文本输入。 如果没有输入任何值,我想忽略所有规则 - 只留下输入。 目前,如果我关注,然后集中注意力(不输入值)输入被验证,我的UI用我的有效标记更新。 哪个,没关系,但理想情况下,我想单独留下输入。 仅验证是否存在值。 我必须在我的自定义方法中返回true / false,否则它总是无效的。
不知道我能做什么。 感谢您的时间!
HTML:
1 | <input id="phone" name="phone" tabindex="7" placeholder="(###) ###-####" type="text" value=""> |
这是我输入的规则:
JavaScript的
1 2 3 4 5 6 7 8 9 10 | .... 'phone': { 'required': { 'depends': function(element) { return $('#textOptIn').is(':checked'); } }, 'hasValidPhoneNumber': true }, .... |
这是我的自定义方法:
JavaScript的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $.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); } |
不要检查它是否为空,而是使用
1 2 3 4 5 6 7 8 | $.validator.addMethod('hasValidPhoneNumber', function(value, element) { if (this.optional(element) || value.replace(/ /g, '') === '(###)###-####') { return true; } else { return isValidPhoneNumber(value); // } }, messages.invalidPhoneNumber); |