jquery validate 聯動驗證

原本咱們這個項目只有身份證。可是如今要增長一個港澳臺灣的通行證來驗證。前端

也就是在選擇以前得選擇一個身份類型。jquery

如今要改爲這樣。我得進行用戶選擇身份證的時候對大陸身份證的單獨驗證。選臺灣的我單獨驗證臺灣的。自己項目前端全部的JS驗證都是用的jquery validate來進行驗證的。折騰了很久,從最初的ui

var join_msg = 1;
jQuery.validator.addMethod("id_card",function(value,element){
        var type = $("#id_type").val();
        console.log(type[0].value);
        if(!type){
            join_msg = "請選擇身份類型";
            return  false;
        }
        if(type == 1){
            join_msg = "身份證不合法";
            var CN = isIdCardNo(value);
            return CN;
        }else if( type == 2){

        }
    },function(){
        return join_msg;
    }
);

最初是在驗證裏面單獨得到的type 可是以爲這樣不可靠,就在addmethod方法上多添加 了一個參數 this

jQuery.validator.addMethod("id_card",function(value,element,type){
        console.log(type[0]);
    },function(){
        
    }
);

規則方面我用的

id_card:{
    required: false,
    id_card: [$("#id_type").val()]
},

可是這樣不論我怎麼傳參數過去那邊 addmethod方法裏的 type參數永遠都是空。怎麼試怎麼獲取都拿不到。後臺我把規則的地方改了下code

id_type:{
                required: true
            },
            id_card:{
                required: false,
                id_card: [id_type]
            },

也就是id_card 傳過去的實際是上面的id_type 也就是這個表單元素。在addmethod接收裏這樣處理的element

var join_msg = "請填寫正確的證件號碼和選擇正確的身份類型";
jQuery.validator.addMethod("id_card",function(value,element,type){
        var new_type = type[0].value;
        console.log(new_type);
        if(!new_type){
            join_msg = "請選擇身份類型";
            return this.optional(element) || false;
        }
        if(new_type == 1){
            join_msg = "身份證不合法";
            var CN = isIdCardNo(value);
            return this.optional(element) || CN;
        }else if(new_type == 2){

        }
    },function(){
        return join_msg;
    }
);

這樣我就作到了根據不一樣的身份類型判斷 不一樣的身份證號碼是否正確。前端判斷正確了 我後臺更容易處理。io

看結果:console

順利正確的驗證過。且有不一樣的提示。function

相關文章
相關標籤/搜索