/* * Translated default messages for the jQuery validation plugin. * Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語) * Region: TW (Taiwan) */ jQuery.extend(jQuery.validator.messages, { required: "[!]必填欄位", remote: "請修正此欄位", email: "[!]請輸入正確的電子信箱", url: "請輸入合法的URL", date: "請輸入合法的日期", dateISO: "請輸入合法的日期 (ISO).", number: "[!]請輸入數字", digits: "請輸入整數", creditcard: "請輸入合法的信用卡號碼", equalTo: "請重複輸入新密碼", accept: "請輸入有效的後缀字串", maxlength: jQuery.validator.format("最大長度為{0}"), minlength: jQuery.validator.format("最小長度為{0}"), rangelength: jQuery.validator.format("請輸入長度介於 {0} 和 {1} 之間的字串"), range: jQuery.validator.format("請輸入介於 {0} 和 {1} 之間的數值"), max: jQuery.validator.format("請輸入不大於 {0} 的數值"), min: jQuery.validator.format("請輸入不小於 {0} 的數值") }); $.validator.addMethod(//全部數字 "PWDformat1", function(value){ return !value.match(/^[0-9]*$/); }, "[!]密碼不可全部是數字" ); $.validator.addMethod(//英文字母 "PWDformat2", function(value){ return !value.match(/^[A-Za-z]+$/); }, "[!]密碼不可全部是英文字母" ); $.validator.addMethod( "PWDformat3", function(value){ var b = value.replace(/[a-z0-9!@#$%^&*()_]/ig, ""); //alert(b); return (b.length > 0) ? false : true; //if return false else return true; }, "[!]密碼應為 0-9 a-z A-Z 或 特別符號!@#$%^&*()_ 所組成 " ); $.validator.addMethod(//符號 "PWDformat4", function(value){ return value.match(/^[0-9A-Za-z!@#\$%^&\*\(\)_]+$/); }, "[!]密碼不可輸入!@#$%^&*()_以外的符號" ); $.validator.addMethod(//電話號碼 "phone", function(value){ if(value.length==0) return true; return value.match(/^[0][0-9]{1,4}-([0-9]{6,8})+((#([0-9]){1,5}){0,1})$/); }, "[!]電話號碼格式錯誤" ); $.validator.addMethod(//傳真號碼 "phonefax", function(value){ if(value.length==0) return true; return value.match(/^[0][0-9]{1,4}-([0-9]{6,8})+((#([0-9]){1,5}){0,1})$/); }, "[!]傳真號碼格式錯誤" ); $.validator.addMethod(//YYYMMDD 民國年 "Dateformat", function(value, element){ // put your own logic here, this is just a (crappy) example return value.match(/^((1|0)[0-9]{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))$/); }, "[!]請輸入正確的日期格式" ); jQuery.validator.addMethod( "filetype", function(value){ var re = /\.(png|jpg|gif|xls|pdf|docx|doc|)$/i; //允許的圖片副檔名(JPG、DOC、XLS、PDF) if(value.length==0) return true; if(!re.test(value)){ return false; }else{ return true; } }, "[!]檔案格式錯誤 ,請上傳.png|.jpg|.gif|.xls|.pdf|.doc|.docx" ); jQuery.validator.addMethod( "TWIDN", function(value, element, param){ var a = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'W', 'Z', 'I', 'O'); var b = new Array(1, 9, 8, 7, 6, 5, 4, 3, 2, 1); var c = new Array(2); var d; var e; var f; var g = 0; var h = /^[a-z](1|2)\d{8}$/i; if (value.search(h) == -1) { return false; } else { d = value.charAt(0).toUpperCase(); f = value.charAt(9); } for (var i = 0; i < 26; i++) { if (d == a[i])//a==a { e = i + 10; //10 c[0] = Math.floor(e / 10); //1 c[1] = e - (c[0] * 10); //10-(1*10) break; } } for (var i = 0; i < b.length; i++) { if (i < 2) { g += c[i] * b[i]; } else { g += parseInt(value.charAt(i - 1)) * b[i]; } } if ((g % 10) == f) { return true; } if ((10 - (g % 10)) != f) { return false; } return true; }, "[!]請輸入有效的身份證字號!" ); jQuery.validator.addMethod( "TWBAN", function (value){ var i; var a1; var a2; var a3; var a4; var a5; var b1; var b2; var b3; var b4; var b5; var c1; var c2; var c3; var c4; var d1; var d2; var d3; var d4; var d5; var d6; var d7; var cd8; if(value.length==0) return true; d1 = parseInt(value.charAt(0)); d2 = parseInt(value.charAt(1)); d3 = parseInt(value.charAt(2)); d4 = parseInt(value.charAt(3)); d5 = parseInt(value.charAt(4)); d6 = parseInt(value.charAt(5)); d7 = parseInt(value.charAt(6)); cd8 = parseInt(value.charAt(7)); c1 = d1; c2 = d3; c3 = d5; c4 = cd8; a1 = parseInt((d2 * 2) / 10); b1 = (d2 * 2) % 10; a2 = parseInt((d4 * 2) / 10); b2 = (d4 * 2) % 10; a3 = parseInt((d6 * 2) / 10); b3 = (d6 * 2) % 10; a4 = parseInt((d7 * 4) / 10); b4 = (d7 * 4) % 10; a5 = parseInt((a4 + b4) / 10); b5 = (a4 + b4) % 10; if((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a4 + b4 + c4) % 10 == 0) return true; if(d7 = 7){ if((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a5 + c4) % 10 == 0) return true; } return false; }, "[!]請輸入有效的統一編號!" ); //同時檢核IDN和 BAN jQuery.validator.addMethod( "IDNBAN", function (value,element){ if(value.length==0) {//沒輸入 return true; } if(value.length==10){//輸入10碼 var a = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'W', 'Z', 'I', 'O'); var b = new Array(1, 9, 8, 7, 6, 5, 4, 3, 2, 1); var c = new Array(2); var d; var e; var f; var g = 0; var h = /^[a-z](1|2)\d{8}$/i; if (value.search(h) == -1){ return false; }else{ d = value.charAt(0).toUpperCase(); f = value.charAt(9); } for (var i = 0; i < 26; i++){ if (d == a[i]){ //a==a e = i + 10; //10 c[0] = Math.floor(e / 10); //1 c[1] = e - (c[0] * 10); //10-(1*10) break; } } for (var i = 0; i < b.length; i++){ if (i < 2){ g += c[i] * b[i]; }else{ g += parseInt(value.charAt(i - 1)) * b[i]; } } if ((g % 10) == f){ return true; }if ((10 - (g % 10)) != f){ return false; } return true; } else if(value.length==8){ //輸入8碼 var i; var a1;var a2;var a3;var a4;var a5; var b1;var b2;var b3;var b4;var b5; var c1;var c2;var c3; var c4;var d1;var d2;var d3;var d4;var d5;var d6;var d7;var cd8; d1 = parseInt(value.charAt(0)); d2 = parseInt(value.charAt(1)); d3 = parseInt(value.charAt(2)); d4 = parseInt(value.charAt(3)); d5 = parseInt(value.charAt(4)); d6 = parseInt(value.charAt(5)); d7 = parseInt(value.charAt(6)); cd8 = parseInt(value.charAt(7)); c1 = d1; c2 = d3; c3 = d5; c4 = cd8; a1 = parseInt((d2 * 2) / 10); b1 = (d2 * 2) % 10; a2 = parseInt((d4 * 2) / 10); b2 = (d4 * 2) % 10; a3 = parseInt((d6 * 2) / 10); b3 = (d6 * 2) % 10; a4 = parseInt((d7 * 4) / 10); b4 = (d7 * 4) % 10; a5 = parseInt((a4 + b4) / 10); b5 = (a4 + b4) % 10; if((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a4 + b4 + c4) % 10 == 0) return true; if(d7 = 7){ if((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a5 + c4) % 10 == 0) return true; } return false; }else{///輸入其他長度 return false; } }, "[!]資料輸入錯誤,非正確的身分證字號或統一編號" ); //同時檢核IDN和 BAN 和 ARC 居留證 2015-05-18 Angus add jQuery.validator.addMethod( "IDNBANARC", function (value,element){ if(value.length==0) {//沒輸入 return true; } if(value.length==10){//輸入10碼 var a = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'W', 'Z', 'I', 'O'); var b = new Array(1, 9, 8, 7, 6, 5, 4, 3, 2, 1); var c = new Array(2); var d; var e; var f; var g = 0; var h = /^[a-z](1|2)\d{8}$/i; if (value.search(h) == -1){ if(uiCommonValidatePassportId(value)){ return true; } return false; }else{ d = value.charAt(0).toUpperCase(); f = value.charAt(9); } for (var i = 0; i < 26; i++){ if (d == a[i]){ //a==a e = i + 10; //10 c[0] = Math.floor(e / 10); //1 c[1] = e - (c[0] * 10); //10-(1*10) break; } } for (var i = 0; i < b.length; i++){ if (i < 2){ g += c[i] * b[i]; }else{ g += parseInt(value.charAt(i - 1)) * b[i]; } } if ((g % 10) == f){ return true; }if ((10 - (g % 10)) != f){ if(uiCommonValidatePassportId(value)){ return true; } return false; } return true; } else if(value.length==8){ //輸入8碼 var i; var a1;var a2;var a3;var a4;var a5; var b1;var b2;var b3;var b4;var b5; var c1;var c2;var c3; var c4;var d1;var d2;var d3;var d4;var d5;var d6;var d7;var cd8; d1 = parseInt(value.charAt(0)); d2 = parseInt(value.charAt(1)); d3 = parseInt(value.charAt(2)); d4 = parseInt(value.charAt(3)); d5 = parseInt(value.charAt(4)); d6 = parseInt(value.charAt(5)); d7 = parseInt(value.charAt(6)); cd8 = parseInt(value.charAt(7)); c1 = d1; c2 = d3; c3 = d5; c4 = cd8; a1 = parseInt((d2 * 2) / 10); b1 = (d2 * 2) % 10; a2 = parseInt((d4 * 2) / 10); b2 = (d4 * 2) % 10; a3 = parseInt((d6 * 2) / 10); b3 = (d6 * 2) % 10; a4 = parseInt((d7 * 4) / 10); b4 = (d7 * 4) % 10; a5 = parseInt((a4 + b4) / 10); b5 = (a4 + b4) % 10; if((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a4 + b4 + c4) % 10 == 0) return true; if(d7 = 7){ if((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a5 + c4) % 10 == 0) return true; } return false; }else{///輸入其他長度 return false; } }, "[!]資料輸入錯誤,非正確的身分證字號或統一編號或居留證號" ); //2015-05-19 增加居留證號檢查 function uiCommonValidatePassportId(value) { if (value.length < 10) return false; value = value.replace(/\s+/g, ""); var isPass = false; if ((/^[A-Z, a-z]{1}[A-D, a-d]{1}[0-9]{8}$/.test(value))) { // check new rule var strFst = 'ABCDEFGHJKLMNPQRSTUVXYWZIO'; var strInt = '19876543211'; var strFstWd = value.toUpperCase(); var strIntAll; var intANS=0,i=0; var intFst1,intFst2,intNum1,intNum2,intNum3; intFst1 = parseInt(strFst.indexOf(strFstWd.substr(0,1)),10) + 10; intFst2 = parseInt(strFst.indexOf(strFstWd.substr(1,1)),10) + 10; if ( intFst1 > 29 ) intNum1 = 3; else if ( intFst1 > 19 ) intNum1 = 2; else intNum1 = 1; intNum2 = intFst1 % 10; intNum3 = intFst2 - 10; strIntAll = intNum1.toString() + intNum2.toString() + intNum3.toString() + value.substring(2,11); // 字串組合; for (var i=0; i<=10; i++) intANS += (parseInt(strInt.substr(i,1),10) * parseInt(strIntAll.substr(i,1),10)); isPass = (!(intANS % 10)); } if (isPass == false) { // check old rule if (/^[0-9]{8}[A-Z, a-z]{2}$/.test(value)) { var checkDate = value.substring(0,8); var intDate = parseInt(checkDate); var day = intDate%100; var month = Math.floor(intDate%10000/100); var year = Math.floor(intDate/10000); var xdata = new Date(year,month-1,day); isPass = (intDate >= 18500101 && ((xdata.getFullYear() == year) && (xdata.getMonth() == month - 1) && (xdata.getDate() == day))); } } return isPass; }