如果没有值,jQuery验证忽略自定义验证规则

时间:2014-05-27 17:25:07

标签: jquery jquery-validate

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

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

不确定我能做什么。谢谢你的时间!

HTML

<input id="phone" name="phone" tabindex="7" placeholder="(###) ###-####" type="text" value="">

以下是此输入的规则:

的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);
}

1 个答案:

答案 0 :(得分:0)

不要检查它是否为空,而是使用this.optional(element)。它只是使字段可选。换句话说,如果您将其留空,则根本不会对其进行评估。

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