/** * project: lib.validate.js ver 0.7.0 * description: üũ, ǥȭ * author: jstoy project * date: 2004-03-10 * * 2004-03-10 ver 0.0.1 * 2004-04-21 ver 0.1.0 - lainTT (忡 ּȭ, trim 籸) * 2004-04-23 ver 0.1.1 - lainTT (üũڽ īƮ üũ[mincheck, maxcheck] ߰) * 2004-05-19 - ϴþƺ ( üũԼ ֵ , üũԼ Ģ func_ɼǸ) * 2004-05-21 ver 0.2.0 * 2004-09-06 ver 0.6.0 - jstoy (setCheckFields, setForm, setFunc, setParam, delParam method ߰, option map 絵..) * 2004-09-30 ver 0.6.1 - Tenshi (disabled Ǿִ ü üũ ) * 2004-10-15 - Tenshi (multi select õ [selectedIndex == -1] û ݿ - [yyi at yourim.net]) * 2004-11-06 ver 0.7.0 - Tenshi (multi select ü üũ[minselect, maxselect] ߰ - [yyi at yourim.net] ) - (ܱ ȣ ɼ ߰[foreignerno] - ɼǸ ) - Tenshi (phone, homephone ɼǿ 070, 080, 1544 ȭȣ üũ ϵ - 迵[crane123 at naver.com] ) - Tenshi (̹ ϸ Է¹޴ [imageonly]߰ - kurome ) * 2007-02-02 (minhan ߰) ѱ ڼ üũ * 2009-10-22 prototype.js for (in) => for(;;;) */ function dValidate(form, confirmStr) { if(validate(form)) { var cfStr = confirmStr || "Ͻðڽϱ?"; if(confirm(cfStr)) { form.submit(); } else return; } else return; } function validate(form, fields) { var lah = new FormChecker(form); if (fields) lah.setCheckFields(fields); var wmf = lah.go(); // if (wmf == false) alert(lah.getErrorMessage()); return wmf; } FormChecker = function(form) { this.FUNC_MAP = { email : "this.func_email", hangul : "this.func_hangul", hangulonly : "this.func_hangulonly", engonly : "this.func_engonly", engspaceonly : "this.func_engspaceonly", hanengspaceonly : "this.func_hanengspaceonly", decimal : "this.func_decimal", // ex) 1 1.1 0.2 (Ҽ) decimal_mi : "this.func_decimal_mi", // ex) 1 1.1 0.2 -1 -0.22 (Ҽ,) number : "this.func_number", number_mi : "this.func_number_mi", number_comma : "this.func_number_comma", number_mi_comma : "this.func_number_mi_comma", engnumber : "this.func_engnumber", birthday8d : "this.func_birthday8d", residentno: "this.func_residentno", jumin : "this.func_jumin", foreignerno:"this.func_foreignerno", bizno : "this.func_bizno", phone : "this.func_phone", homephone : "this.func_homephone", handphone : "this.func_handphone", phoneHa : "this.func_phoneHa", handphoneHa : "this.func_handphoneHa", userid : "this.func_userid", userid_firstnum : "this.func_userid_firstnum", userpwd : "this.func_userpwd" } this.ERR_MSG = { system : "FormChecker Error: ", required : "ݵ ԷϿ մϴ.", requirenum:" ׸ ߿ {requirenum} ̻ ׸ ԷµǾ մϴ.", notequal : "Էµ ġ ʽϴ.", invalid : "Էµ Ŀ ߳ϴ.", minbyte : "Էµ ̰ {minbyte} ̻̾ մϴ.", minhan : "Էµ ̰ {minhan} ̻̾ մϴ.", maxbyte : "Էµ ̰ {maxbyte}ڸ ʰ ϴ.", mincheck : "{mincheck} ׸̻ ϼ.", maxcheck : "{maxcheck} ׸Ϸ ϼ.", minselect: "{minselect} ׸̻ ϼ.", maxselect: "{maxselect} ׸Ϸ ϼ.", excelonly: " ϸ ÷ ֽϴ.", imageonly: "̹ ϸ ÷ ֽϴ.", movieonly: " ϸ ÷ ֽϴ." } this.ERR_DO = { text : "focus select", select : "focus", check : "focus", radio : "focus", file : "focus", hidden : "" } this.ERR_SYS = '_SYSERR_'; this.fields = form.elements; this.form = form; this.errMsg = ""; } FormChecker.prototype.setForm = function(form) { this.form = form; } FormChecker.prototype.setFunc = function(map, func) { if (typeof(this.FUNC_MAP[map]) == "string") return; this.FUNC_MAP[map] = func; } FormChecker.prototype.setCheckFields = function(fields) { this.fields = []; if(typeof(fields) == 'string') this.fields = [this.form.elements[fields]]; else for(var i=0, s=fields.length; i prototype.js ( TextSugget ) 浹 Ͽ tag name var span = el.getAttribute("SPAN"); var glue = el.getAttribute("GLUE"); var pattern = el.getAttribute("PATTERN"); var excelonly = el.getAttribute("EXCELONLY"); var imageonly = el.getAttribute("IMAGEONLY"); var movieonly = el.getAttribute("MOVIEONLY"); if (trim != null && (elType == "text" || elType == "hidden")) { switch (trim) { case "trim": el.value = el.value.replace(/^\s+/, "").replace(/\s+$/, ""); break; case "compress": el.value = el.value.replace(/\s+/, ""); break; case "ltrim": el.value = el.value.replace(/^\s+/, ""); break; case "rtrim": el.value = el.value.replace(/\s+$/, ""); break; } } var elEmpty = this.isEmpty(el, elType); if (required != null) { if (required == "required") { if (elEmpty) return this.raiseError(el, "required"); } else { requirenum = parseInt(requirenum, 10); var _num = 0; var _name = []; if (requirenum > 0) { for (var j=0; j 0 || maxbyte > 0) && (elType == "text" || elType == "hidden")) { var _tmp = el.value; var _len = el.value.length; for (j=0; j<_tmp.length; j++) { if (_tmp.charCodeAt(j) > 128) _len++; } if (minbyte > 0 && _len < minbyte) return this.raiseError(el, "minbyte"); if (maxbyte > 0 && _len > maxbyte) return this.raiseError(el, "maxbyte"); } if ((minhan > 0) && (elType == "text" || elType == "hidden")) { var _tmp = el.value; var _len = el.value.length; for (j=0; j<_tmp.length; j++) { if (_tmp.charCodeAt(j) > 128) _len++; } if (minhan > 0 && _len < minhan) return this.raiseError(el, "minhan"); } if (match != null && elType != "file") { if (typeof this.form.elements[match] == "undefined") return this.raiseError(this.ERR_SYS, "Element '"+ match +"' is not found."); else if (el.value != this.form.elements[match].value) return this.raiseError(el, "notequal"); } if (option != null && !elEmpty && elType != "file") { var _options = option.split(" "); //for (var j in _options) { => prototype.js Ʒ 2009-10-22 for (var j=0; j<_options.length; j++) { var _func = eval(this.FUNC_MAP[_options[j]]); if (span != null) { var _value = []; for (var k=0; k 0 || maxcheck > 0) && elType == "check") { var _checks = this.form.elements[el.name]; var _num = 0; if (typeof _checks.length != "undefined") { for (var j=0; j<_checks.length; j++) { if (_checks[j].checked) _num++; } } else { if (_checks.checked) _num++; } if (mincheck > 0 && _num < mincheck) return this.raiseError(el, "mincheck"); if (maxcheck > 0 && _num > maxcheck) return this.raiseError(el, "maxcheck"); } if ((minselect > 0 || maxselect > 0) && elType == "multiselect") { var _num = 0; for (var j=0; j 0 && _num < minselect) return this.raiseError(el, "minselect"); if (maxselect > 0 && _num > maxselect) return this.raiseError(el, "maxselect"); } if (excelonly != null && elType == "file") { var fn = el.value; if (fn != "") { var dotIndex = fn.lastIndexOf("."); var ext = fn.substring(dotIndex+1).toLowerCase(); if(ext != "xls" && ext != "xlsx") return this.raiseError(el, "excelonly"); } } if (imageonly != null && elType == "file") { var fn = el.value; if (fn != "") { var dotIndex = fn.lastIndexOf("."); var ext = fn.substring(dotIndex+1).toLowerCase(); if(ext != "jpg" && ext != "jpeg" && ext != "gif" && ext != "png") return this.raiseError(el, "imageonly"); } } if (movieonly != null && elType == "file") { var fn = el.value; if (fn != "") { var dotIndex = fn.lastIndexOf("."); var ext = fn.substring(dotIndex+1).toLowerCase(); if(ext != "wmv" && ext != "asf") return this.raiseError(el, "movieonly"); } } } return true; } FormChecker.prototype.isValidElement = function(el) { return el.name && el.tagName.match(/^input|select|textarea$/i) && !el.disabled; } FormChecker.prototype.isEmpty = function(el, type) { switch (type) { case "file": case "text": case "hidden": if (el.value == null || el.value == "") return true; break; case "select": case "multiselect": if (el.selectedIndex == -1 || el[el.selectedIndex].value == null || el[el.selectedIndex].value == "") return true; break; case "check": case "radio": var elCheck = this.form.elements[el.name]; var elChecked = false; if (typeof elCheck.length != "undefined") { for (var j=0; j
- "+ msg +"
"; // addAlert(this.errMsg); // } this.errMsg = "\'"+ elName +"\'\n\n - "+ msg +"\n"; alert(this.errMsg); //for (var i in _errDos) { => prototype.js Ʒ 2009-10-22 for (var i=0; i<_errDos.length; i++) { switch (_errDos[i]) { case "delete": el.value = ""; break; case "select": el.select(); break; case "focus": el.focus(); break; } } return false; } FormChecker.prototype.getErrorMessage = function() { return this.errMsg; } FormChecker.prototype.getName = function(el) { return el.getAttribute("HNAME") == null || el.getAttribute("HNAME") == "" ? el.name : el.getAttribute("HNAME"); } /** * validate functions */ FormChecker.prototype.func_email = function(el,value) { var value = value ? value : el.value; // var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/; var pattern = /^[_a-zA-Z0-9-_\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/; return pattern.test(value) ? true : "invalid"; } FormChecker.prototype.func_hangul = function(el) { var pattern = /[-]/; return pattern.test(el.value) ? true : "ݵ ѱ ؾ մϴ"; } FormChecker.prototype.func_hangulonly = function(el) { var pattern = /^[-]+$/; return pattern.test(el.value) ? true : "ݵ ѱ۷θ Էؾ մϴ"; } FormChecker.prototype.func_engonly = function(el) { var pattern = /^[a-zA-Z]+$/; return pattern.test(el.value) ? true : "ݵ Էؾ մϴ."; } FormChecker.prototype.func_engspaceonly = function(el) { var pattern = /^[a-zA-Z]+[a-zA-Z\s]*$/; return pattern.test(el.value) ? true : "ݵ Էؾ մϴ."; } FormChecker.prototype.func_hanengspaceonly = function(el) { var pattern = /^[a-zA-Z-]+[a-zA-Z-\s]*$/; return pattern.test(el.value) ? true : "ݵ ѱ Ǵ Էؾ մϴ."; } FormChecker.prototype.func_decimal = function(el) { // var pattern = /^((-?\d+(\.\d*)?)|(-?(\d*\.)?\d+))$/; // .2 -.2 Ҽ var pattern = /^((\d+\.)?\d+)$/; return pattern.test(el.value) ? true : "ݵ (Ҽ)· Էؾ մϴ"; } FormChecker.prototype.func_decimal_mi = function(el) { // var pattern = /^((-?\d+(\.\d*)?)|(-?(\d*\.)?\d+))$/; // .2 -.2 Ҽ var pattern = /^(-?(\d+\.)?\d+)$/; return pattern.test(el.value) ? true : "ݵ (Ҽ,)· Էؾ մϴ"; } FormChecker.prototype.func_number = function(el) { var pattern = /^[0-9]+$/; return pattern.test(el.value) ? true : "ݵ ڷθ Էؾ մϴ"; } FormChecker.prototype.func_number_mi = function(el) { var pattern = /^[0-9\-]+$/; return pattern.test(el.value) ? true : "ݵ ()θ Էؾ մϴ"; } FormChecker.prototype.func_number_comma = function(el) { var pattern = /^[0-9,]+$/; return pattern.test(el.value) ? true : "ݵ ڷθ Էؾ մϴ"; } FormChecker.prototype.func_number_mi_comma = function(el) { var pattern = /^[0-9,-]+$/; return pattern.test(el.value) ? true : "ݵ (Ҽ,)· Էؾ մϴ"; } FormChecker.prototype.func_engnumber = function(el) { var pattern = /^[a-zA-Z0-9]+$/; return pattern.test(el.value) ? true : "ݵ Ǵ ڷθ Էؾ մϴ"; } FormChecker.prototype.func_birthday8d = function(el) { var resultStr = true; var pattern = /^\d{8}$/; if (!pattern.test(el.value)) { resultStr = false; } else { var birthYear = el.value.substr(0,4); var birthMonth = el.value.substr(4,2); var birthDate = el.value.substr(6,2); if(birthYear < "1900" || birthYear > "2100") resultStr = false; if(birthMonth < "01" || birthMonth > "12") resultStr = false; var fEndDate = "31"; if(birthMonth == "04" || birthMonth == "06" || birthMonth == "09" || birthMonth == "11") fEndDate = "30"; else if(birthMonth == "02") fEndDate = (parseInt(birthYear) % 4 == 0 || parseInt(birthYear) % 100 == 0 || parseInt(birthYear) % 400 == 0) ? "29" : "28"; if(birthDate < "01" || birthDate > fEndDate) resultStr = false; } return resultStr ? true : " 8ڸ(YYYYMMDD) Ȯϰ Էּ"; } FormChecker.prototype.func_residentno = function(el,value) { var resultStr = ""; var pattern = /^([0-9]{6})-?([0-9]{7})$/; var num = value ? value : el.value; if (!pattern.test(num)) resultStr = "invalid"; num = RegExp.$1 + RegExp.$2; var sum = 0; var last = num.charCodeAt(12) - 0x30; var bases = "234567892345"; for (var i=0; i<12; i++) { if (isNaN(num.substring(i,i+1))) resultStr = "invalid"; sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30); } var mod = sum % 11; resultStr = (11 - mod) % 10 == last ? true : "invalid"; if(resultStr == true) { return true; } else { var pattern = /^(\d{6})-?(\d{5}(\d{1})\d{1})$/; var num = value ? value : el.value; if (!pattern.test(num)) return "invalid"; num = RegExp.$1 + RegExp.$2; if (RegExp.$3 == 7 || RegExp.$3 == 8 || RegExp.$3 == 9) if ((num[7]*10 + num[8]) %2) return "invalid"; var sum = 0; var last = num.charCodeAt(12) - 0x30; var bases = "234567892345"; for (var i=0; i<12; i++) { if (isNaN(num.substring(i,i+1))) return "invalid"; sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30); } var mod = sum % 11; if(RegExp.$3 == 7 || RegExp.$3 == 8 || RegExp.$3 == 9) return (11 - mod + 2) % 10 == last ? true : "invalid"; else return (11 - mod) % 10 == last ? true : "invalid"; } } FormChecker.prototype.func_jumin = function(el,value) { var pattern = /^([0-9]{6})-?([0-9]{7})$/; var num = value ? value : el.value; if (!pattern.test(num)) return "invalid"; num = RegExp.$1 + RegExp.$2; var sum = 0; var last = num.charCodeAt(12) - 0x30; var bases = "234567892345"; for (var i=0; i<12; i++) { if (isNaN(num.substring(i,i+1))) return "invalid"; sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30); } var mod = sum % 11; return (11 - mod) % 10 == last ? true : "invalid"; } FormChecker.prototype.func_foreignerno = function(el,value) { var pattern = /^(\d{6})-?(\d{5}[7-9]\d{1})$/; var num = value ? value : el.value; if (!pattern.test(num)) return "invalid"; num = RegExp.$1 + RegExp.$2; if ((num[7]*10 + num[8]) %2) return "invalid"; var sum = 0; var last = num.charCodeAt(12) - 0x30; var bases = "234567892345"; for (var i=0; i<12; i++) { if (isNaN(num.substring(i,i+1))) return "invalid"; sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30); } var mod = sum % 11; return (11 - mod + 2) % 10 == last ? true : "invalid"; } FormChecker.prototype.func_bizno = function(el,value) { var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/; var num = value ? value : el.value; if (!pattern.test(num)) return "invalid"; num = RegExp.$1 + RegExp.$2 + RegExp.$3; var cVal = 0; for (var i=0; i<8; i++) { var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp == 1 ) ? 3 : 7); cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10; } var li_temp = parseFloat(num.substring(i,i+1)) * 5 + "0"; cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2)); return parseInt(num.substring(9,10)) == 10-(cVal % 10)%10 ? true : "invalid"; } FormChecker.prototype.func_phone = function(el,value) { var pattern = /^(0[2-8][0-5]?|01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/; var pattern15xx = /^(1544|1566|1577|1588|1599|1644|1688)-?([0-9]{4})$/; var num = value ? value : el.value; return pattern.exec(num) || pattern15xx.exec(num) ? true : "invalid"; } FormChecker.prototype.func_homephone = function(el,value) { var pattern = /^(0[2-8][0-5]?)-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/; var pattern15xx = /^(1544|1566|1577|1588|1599|1644|1688)-?([0-9]{4})$/; var num = value ? value : el.value; return pattern.exec(num) || pattern15xx.exec(num) ? true : "invalid"; } FormChecker.prototype.func_handphone = function(el,value) { //var pattern = /^(01[01346-9])-?([0-9]{1}[0-9]{2,3})-?([0-9]{4})$/; var pattern = /^(01[01346-9])-?([0-9]{4})-?([0-9]{4})$/; var num = value ? value : el.value; //return pattern.exec(num) ? true : "invalid"; return pattern.exec(num) ? true : "޴ȣ 11ڸ Ȯϰ Էּ"; } FormChecker.prototype.func_phoneHa = function(el,value) { var pattern = /^(0[2-8][0-5]?|01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/; var pattern15xx = /^(1544|1566|1577|1588|1599|1644|1688)-?([0-9]{4})$/; var patternHa = /^(010)-?([2-9]{1}[0]{3})-?([0]{4})$/; var num = value ? value : el.value; return (pattern.exec(num) || pattern15xx.exec(num)) && (!patternHa.test(num) ? true : false) ? true : "invalid"; } FormChecker.prototype.func_handphoneHa = function(el,value) { var pattern = /^(01[01346-9])-?([0-9]{1}[0-9]{2,3})-?([0-9]{4})$/; var patternHa = /^(010)-?([2-9]{1}[0]{3})-?([0]{4})$/; var num = value ? value : el.value; return pattern.exec(num) && (!patternHa.test(num) ? true : false) ? true : "invalid"; } FormChecker.prototype.func_userid = function(el,value) { // var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9_]{3,15}$/; var pattern = /^[a-zA-Z0-9_]{1}[a-zA-Z0-9_]{3,15}$/; return pattern.test(el.value) ? true : "4̻ 15 ̸ ԷϽʽÿ.\n - , , _ ڸ ֽϴ"; } FormChecker.prototype.func_userid_firstnum = function(el,value) { var pattern = /^[a-zA-Z0-9_]{1}[a-zA-Z0-9_]{3,15}$/; return pattern.test(el.value) ? true : "4̻ 15 ̸ ԷϽʽÿ.\n - , , _ ڸ ֽϴ"; } FormChecker.prototype.func_userpwd = function(el, value) { // var pattern = /^[A-Za-z0-9`\-=\\\[\];',\./~!@#\$%\^&\*\(\)_\+|\{\}:"<>\?]{6,16}$/; // alert(pattern.exec(el.value)); // return pattern.test(el.value) ? true : "8̻ 16 ̸ ԷϽʽÿ.\n - , , Ưڸ ϼ"; var pwMsg = ""; var pwPassed = true; var pattern1 = /[0-9]/; var pattern2 = /[a-zA-Z]/; var pattern3 = /[~!@#$%^&*_+<>]/; var pcheckcnt = 0; if (pattern1.test(el.value)) { pcheckcnt = pcheckcnt + 1; } if (pattern2.test(el.value)) { pcheckcnt = pcheckcnt + 1; } if (pattern3.test(el.value)) { pcheckcnt = pcheckcnt + 1; } //alert(pcheckcnt); if (pcheckcnt == 2) { if (el.value.length < 10 || el.value.length > 16) { pwMsg = ",,Ư ΰ 10̻ 16 ̸ ԷϽʽÿ."; pwPassed = false; } } else if (pcheckcnt == 3) { if (el.value.length < 8 || el.value.length > 16) { pwMsg = "++Ư 8̻ 16 ̸ ԷϽʽÿ."; pwPassed = false; } } else { pwMsg = ", ҹ, , Ư 4 \n2 10ڸ ̻, \n3 ̻ 8ڸ ̻ Էϼ."; pwPassed = false; } /* if (!pattern1.test(el.value) || !pattern2.test(el.value) || !pattern3.test(el.value) || el.value.length < 10 || el.value.length > 16) { pwMsg = ",,Ư ΰ 10̻ 16 ̸ ԷϽʽÿ."; pwPassed = false; } */ var samePass1 = 0; var samePass2 = 0; var samePass3 = 0; for (var i = 0; i < el.value.length; i++) { var chrPass1; var chrPass2; var chrPass3; if (i >= 2) { chrPass1 = el.value.charCodeAt(i - 2); chrPass2 = el.value.charCodeAt(i - 1); chrPass3 = el.value.charCodeAt(i); //Ϲ īƮ if (chrPass1 == chrPass2 && chrPass2 == chrPass3) { samePass1++; } else { samePass1 = 0; } //Ӽ(+) īƮ if (chrPass1 - chrPass2 == 1 && chrPass2 - chrPass3 == 1) { samePass2++; } else { samePass2 = 0; } //Ӽ(-) īƮ if (chrPass1 - chrPass2 == -1 && chrPass2 - chrPass3 == -1) { samePass3++; } else { samePass3 = 0; } } /*'if (samePass1 > 0) { ' pwMsg = "Ϲڸ 3 ̻ Է ϴ."; pwPassed = false; } if (samePass2 > 0 || samePass3 > 0) { pwMsg = ", ڴ 3 ̻ Է ϴ."; pwPassed = false; }*/ } return pwPassed ? true : pwMsg; }