原本咱們這個項目只有身份證。可是如今要增長一個港澳臺灣的通行證來驗證。前端
也就是在選擇以前得選擇一個身份類型。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