/******************************************************** * FILE NAME : Validator.js * DESC : Æû À¯È¿¼º°Ë»ç * DATE : 2004-06-28 * AUTHOR : ¹Ú¸í±Ô * HISTORY : *********************************************************/ /** * [HTML Æû ű׿¡ ValidationÀ» À§ÇØ Ãß°¡ÇÑ ¼Ó¼º * * - GROUP : * - HNAME : * - REQUIRED : * - MINBYTE : * - MAXBYTE : * - OPTION : * - email * - homepage * - phone * - mobile * - jumin * - biznum * - number * - real * - kor * - kornum * - eng * - engnum * - engspace * - koreng * - char * - id * - password * - date * */ function Validator(form) { this.form = form; var ERROR_MSG_REQUIRED = "{name+Àº´Â} ÇʼöÇ׸ñÀÔ´Ï´Ù."; var ERROR_MSG_OPTION = "{name+À̰¡} ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù"; var ERROR_MSG_MAXBYTE = "{name+Àº´Â} ÃÖ´ë {length}±ÛÀÚ ÀÌÇÏÀ̾î¾ß ÇÕ´Ï´Ù."; var ERROR_MSG_MINBYTE = "{name+Àº´Â} ÃÖ¼Ò {length}±ÛÀÚ ÀÌ»óÀ̾î¾ß ÇÕ´Ï´Ù."; /// ½ºÆ®¸µ °´Ã¼¿¡ ¸Þ¼Òµå Ãß°¡ /// String.prototype.trim = function(str) { str = this != window ? this : str; return str.replace(/^\s+/g,'').replace(/\s+$/g,''); } String.prototype.hasFinalConsonant = function(str) { str = this != window ? this : str; var strTemp = str.substr(str.length-1); return ((strTemp.charCodeAt(0)-16)%28!=0); } function hasValue(group) { var el; for(i=0; i el.getAttribute('MAXBYTE') ) { return doError(el, ERROR_MSG_MAXBYTE, false); } } // ÃÖ¼Ò±æÀ̰˻ç if(el.getAttribute('MINBYTE') != null) { if(el.value != null && el.value.length < el.getAttribute('MINBYTE') ) { return doError(el, ERROR_MSG_MINBYTE, false); } } // Ư¼öÆÐÅϰ˻ç var option = el.getAttribute('OPTION'); if(option != null ) { // Çʼöµ¥ÀÌÅͰ¡ ¾Æ´Ñ °æ¿ì °ªÀÌ ¾øÀ¸¸é °Ë»çÇÏÁö ¾ÊÀ½ if( el.getAttribute('REQUIRED') == null && (el.value == null || el.value == '') ) continue; if(option == 'email') { if( !isValidEmail(el.value) ) { return doError(el, ERROR_MSG_OPTION, false); } } else if(option == 'homepage') { if( !isValidHomepage(el.value) ) { return doError(el,"{name+Àº´Â} ¿Ã¹Ù¸¥ ȨÆäÀÌÁöÁÖ¼Ò°¡ ¾Æ´Õ´Ï´Ù.", false); } } else if(option == 'phone') { if( !isValidPhone(el.value) ) { return doError(el,"{name+À̰¡} ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.", false); } } else if(option == 'mobile') { if( !isValidMobilePhone(el.value) ) { return doError(el,"{name+À̰¡} ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.", false); } } else if(option == 'jumin') { if( !isValidJumin(el.value) ) { return doError(el,"{name+Àº´Â} ¿Ã¹Ù¸¥ Áֹεî·Ï¹øÈ£°¡ ¾Æ´Õ´Ï´Ù.", false); } } else if(option == 'biznum') { if( !isValidBiznum(el.value) ) { return doError(el,"{name+Àº´Â} ¿Ã¹Ù¸¥ »ç¾÷ÀÚµî·Ï¹øÈ£°¡ ¾Æ´Õ´Ï´Ù.", false); } } else if(option == 'number') { if( !isValidNumber(el.value) ) { return doError(el,"{name+Àº´Â} ¼ýÀÚ¸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'real') { if( !isValidReal(el.value) ) { return doError(el,"{name+Àº´Â} ½Ç¼ö¸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'kor') { if( !isValidKor(el.value) ) { return doError(el,"{name+Àº´Â} Çѱ۸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'kornum') { if( !isValidKorNum(el.value) ) { return doError(el,"{name+Àº´Â} ÇѱÛ+¼ýÀÚ¸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'eng') { if( !isValidEng(el.value) ) { return doError(el,"{name+Àº´Â} ¿µ¾î¸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'engnum') { if( !isValidEngNum(el.value) ) { return doError(el,"{name+Àº´Â} ¿µ¾î+¼ýÀÚ¸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'engspace') { if( !isValidEngSpace(el.value) ) { return doError(el,"{name+Àº´Â} ¿µ¾î¸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'koreng') { if( !isValidKorengEng(el.value) ) { return doError(el,"{name+Àº´Â} ÇѱÛÀ̳ª ¿µ¾î¸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'char') { if( !isValidChar(el.value) ) { return doError(el,"{name+Àº´Â} ÇѱÛ, ¿µ¾î, ¼ýÀÚ ¸¸ ÀÔ·ÂÇØ¾ßÇÕ´Ï´Ù.", false); } } else if(option == 'id') { if( !isValidID(el.value) ) { return doError(el,"{name+Àº´Â} ¿Ã¹Ù¸¥ ¾ÆÀ̵𰡠¾Æ´Õ´Ï´Ù.", false); } } else if(option == 'password') { if( !isValidPassword(el.value) ) { return doError(el,"{name+Àº´Â} ¿Ã¹Ù¸¥ ºñ¹Ð¹øÈ£°¡ ¾Æ´Õ´Ï´Ù.", false); } } else if(option == 'date') { if( !isValidDate(el.value) ) { return doError(el,"³¯Â¥ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.\nÇü½Ä)YYYY-MM-DD ·Î ÀÔ·ÂÇØ Áֽʽÿä.", false); } else if( isDate(el.value) ) { return doError(el, "Á¸ÀçÇÏÁö ¾Ê´Â ³¯Â¥ÀÔ´Ï´Ù."); } } } } return true; } this.validate = validate; /** * doError() : ¿¡·¯ ¹ß»ý¿¡ ´ëÇÑ Ã³¸®¸¦ ¼öÇàÇÕ´Ï´Ù. * * @param el : ÆûÀÇ ¿¤¸®¸ÕÆ® °´Ã¼ * @param type : ¿¡·¯±¸ºÐ */ function doError(el, msg, del) { var pattern = /{([a-zA-Z0-9_]+)\+?([°¡-Èþ]{2})?}/; var pattern2 = /{length}/; var tail; var eName; eName = el.getAttribute('HNAME'); if(eName == null) { eName = el.name; } // À̸§ pattern.exec(msg); tail = (RegExp.$2) ? josa(eName, RegExp.$2) : ""; var reMsg = eName + msg.replace(pattern, tail); // ÃÖ¼Ò±æÀÌ if( el.getAttribute('MINBYTE') && el.getAttribute('MINBYTE') != 'null' && el.value.length < el.getAttribute('MINBYTE') ) { pattern2.exec(reMsg); reMsg = reMsg.replace(pattern2, el.getAttribute('MINBYTE')); } // ÃÖ´ë±æÀÌ if( el.getAttribute('MAXBYTE') != null && el.value != null && el.value.length > el.getAttribute('MAXBYTE') ) { pattern2.exec(reMsg); reMsg = reMsg.replace(pattern2, el.getAttribute('MAXBYTE')); } alert(reMsg); if( del ) { el.value = ''; } el.focus(); return false; } /** * josa() : ¹®ÀÚ¿­ÀÇ Á¶»ç¿¡µû¶ó 'Àº', '´Â' °áÁ¤ */ function josa(str,tail) { return (str.hasFinalConsonant()) ? tail.substring(0,1) : tail.substring(1,2); } function isValidEmail(email) { var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/; return (pattern.test(email)) ? true : false; } this.isValidEmail = isValidEmail; /** * isValidHomepage() : ¿Ã¹Ù¸¥ ȨÆäÀÌÁö ÁÖ¼ÒÀÎÁö °Ë»ç * * Çü½Ä) http://www.homepage.com : 'http://'·Î ½ÃÀÛÇØ¾ß ÇÔ. */ function isValidHomepage(homepage) { var pattern = /http:\/\/([a-zA-Z0-9]{2,}).(([a-zA-Z0-9]{2,}).){0,2}([a-zA-Z]{2,3})$/; if( pattern.test(homepage) ) { return true; } else { return false; } } this.isValidHomepage = isValidHomepage; /** * isValidMobilePhone() : ¿Ã¹Ù¸¥ ÈÞ´ëÀüÈ­ ¹øÈ£ÀÎÁö °Ë»ç * * Çü½Ä) 019-973-1004 : '-'·Î ±¸ºÐÇØ¾ß ÇÔ. */ function isValidMobilePhone(phone) { var pattern = /^([0]{1}[1]{1}[016789]{1})-([0-9]{3,4})-([0-9]{4})$/; if( pattern.test(phone) ) { return true; } else { return false; } } this.isValidMobilePhone = isValidMobilePhone; /** * isValidPhone() : ¿Ã¹Ù¸¥ ÀüÈ­ ¹øÈ£ÀÎÁö °Ë»ç * * Çü½Ä) 042-486-9876 : '-' ·Î ±¸ºÐÇØ¾ß ÇÔ. */ function isValidPhone(phone) { var pattern = /^[0]{1}[0-9]{1,2}-[0-9]{3,4}-[0-9]{4}$/; if (pattern.test(phone)) { return true; } else { return false; } } this.isValidPhone = isValidPhone; /** * isValidJumin() : Áֹεî·Ï¹øÈ£°¡ ¿Ã¹Ù¸¥Áö °Ë»ç */ function isValidJumin(jumin) { var pattern = /^([0-9]{6})-?([0-9]{7})$/; if (!pattern.test(jumin)) return false; jumin = RegExp.$1 + RegExp.$2; var sum = 0; var last = jumin.charCodeAt(12) - 0x30; var bases = "234567892345"; for (var i=0; i<12; i++) { if (isNaN(jumin.substring(i,i+1))) return false; sum += (jumin.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30); } var mod = sum % 11; return ((11 - mod) % 10 == last) ? true : false; } this.isValidJumin = isValidJumin /** * isValidBiznum() : »ç¾÷ÀÚ¹øÈ£°¡ ¿Ã¹Ù¸¥Áö °Ë»ç */ function isValidBiznum(biznum) { var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/; if (!pattern.test(biznum)) return false; biznum = 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(biznum.substring(i,i+1)) * cKeyNum) % 10; } var li_temp = parseFloat(biznum.substring(i,i+1)) * 5 + '0'; cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2)); return (parseInt(biznum.substring(9,10)) == 10-(cVal % 10)%10) ? true : false; } this.isValidBiznum = isValidBiznum; function isValidNumber(number) { var pattern = /^[0-9]+$/; return (pattern.test(number)) ? true : false; } function isValidReal(real) { return true; } function isValidKor(kor) { var pattern = /^[°¡-Èþ]+$/; return (pattern.test(kor)) ? true : false; } function isValidKorNum(kornum) { var pattern = /^[°¡-Èþ0-9]+$/; return (pattern.test(kornum)) ? true : false; } function isValidEng(eng) { var pattern = /^[a-zA-Z]+$/; return (pattern.test(eng)) ? true : false; } function isValidEngNum(engnum) { var pattern = /^[a-zA-Z0-9]+$/; return (pattern.test(engnum)) ? true : false; } function isValidEngSpace(eng) { var pattern = /^[a-zA-Z\s]+$/; return (pattern.test(eng)) ? true : false; } function isValidKorEng(koreng) { return (isValidKor(koreng) && isValidEng(koreng)); } function isValidChar(ch) { var pattern = /^[°¡-Èþ-a-zA-Z0-9]+$/; return (pattern.test(ch)) ? true : false; } function isValidID(id) { var pattern = /^[a-z]{1}[a-z0-9]{2,}$/; return (pattern.test(id)) ? true : false; } function isValidPassword(password) { var pattern = /^[a-z0-9]{1}[a-zA-Z0-9]{3,9}$/; return (pattern.test(password)) ? true : false; } /** * isValidDate() : ³¯Â¥Çü½ÄÀÌ ¸Â´ÂÁö °Ë»ç(YYYY-MM-DD¸¸ °¡´ÉÇϵµ·Ï) */ function isValidDate(s) { var pattern = /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/; return (pattern.test(s)) ? true : false; } /** * isDate() : Á¸ÀçÇÏ´Â ³¯Â¥ÀÎÁö °Ë»ç (YYYY-MM-DD ¸¸ °¡´ÉÇϵµ·Ï) */ function isDate(s) { var pattern = /^([0-9]{4})-([0-9]{2})-([0-9]{2})$/; var year, month, date; pattern.exec(s); year = RegExp.$1; month = RegExp.$2; day = RegExp.$3; if( year && month && day ) { } else { return false; } var time = new Date(year, month, date); if( time.getFullYear() == year && time.getMonth() == month && time.getDate() == date ) return true; else return false; } this.isDate = isDate; }