簡體   English   中英

jQuery Validate如果沒有值,則忽略自定義驗證規則

[英]jQuery Validate ignore custom validation rule if no value

我正在使用jQuery Validator插件。 一切工作正常,我想作最后的調整。 我只是沒有運氣找到正確的組合。

我有一個文本輸入,稱為“電話”。 如果未輸入任何值,則我想忽略所有規則-不理會輸入內容。 當前,如果我集中精力,然后集中精力(不輸入值),則輸入將得到驗證,並且我的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);
}

而不是檢查它是否為空,請使用this.optional(element) 它只是使該字段可選。 換句話說,如果您將其保留為空白,則根本不會對其進行評估。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM