/********************************************************
* 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;
}