/** *
* form check trigger function
* 
* * @param form Object * 예 : * : * minbyte : 6byte * maxbyte : * number : 숫자만 입력가능 * hname : 메세지 표시할때 오류항목명 표시 * required : 반드시 입력요 * mincheck : 최소체크해야 할 갯수 * match : 해당항목과 값이 일치해야할 경우 sosu : 소수점 이하 허용자릿수 * @return boolean */ function fnCheckNull(number){ if(number == null || number.value == "" || number.value == " " || number.value == null){ return "0"; } return number.value; } function fnContAmt_Check(cont_amt, cont_attr1, cont_attr2, cont_attr3, form){ var form1 = form; var amt = trimComma(fnCheckNull(cont_amt)); var attr1 = trimComma(fnCheckNull(cont_attr1)); var attr2 = trimComma(fnCheckNull(cont_attr2)); var attr3 = trimComma(fnCheckNull(cont_attr3)); if(amt == "" || amt == null || amt == 0){ alert("계약금을 먼저 입력 하세요."); cont_amt.focus(); return makeCommaObj(cont_attr1); } var sum = eval(attr1) + eval(attr2) + eval(attr3); if(amt < sum){ alert("입력하신 중도금 합계가 계약금을 초과 하였습니다. 다시 입력 하여 주십시요."); cont_attr1.value = ""; cont_attr1.focus(); return; } return makeCommaObj(cont_attr1); } function num2han(num){ var i, j=0, k=0; var han1 = new Array("","일","이","삼","사","오","육","칠","팔","구"); var han2 = new Array("","만","억","조","경","해","시","양","구","간"); var han3 = new Array("","십","백","천"); var result="", hangul = num + "", pm = ""; var str = new Array(), str2=""; var strTmp = new Array(); if(parseInt(num)==0) return "영"; //입력된 숫자가 0일 경우 처리 if(hangul.substring(0,1) == "-"){ //음수 처리 pm = "마이너스 "; hangul = hangul.substring(1, hangul.length); } if(hangul.length > han2.length*4) return "too much number"; //범위를 넘는 숫자 처리 자리수 배열 han2에 자리수 단위만 추가하면 범위가 늘어남. for(i=hangul.length; i > 0; i=i-4){ str[j] = hangul.substring(i-4,i); //4자리씩 끊는다. for(k=str[j].length;k>0;k--){ strTmp[k] = (str[j].substring(k-1,k))?str[j].substring(k-1,k):""; strTmp[k] = han1[parseInt(strTmp[k])]; if(strTmp[k]) strTmp[k] += han3[str[j].length-k]; str2 = strTmp[k] + str2; } str[j] = str2; //if(str[j]) result = str[j]+han2[j]+result; //4자리마다 한칸씩 띄워서 보여주는 부분. 우선은 주석처리 //result = (str[j])? " "+str[j]+han2[j]+result : " " + result; result = (str[j])? " "+str[j]+han2[j]+result : " " + result; j++; str2 = ""; } return pm + result; //부호 + 숫자값 } function validate(form) { var checker = new FormChecker(form); try { var result = checker.go(); } catch (e) { alert(e); return false; } checker.destroy(); return result; } FormChecker = function(form) { /** *
    * pre-set error messages
    * 
*/ this.ERRMSG = { common : "입력하신 내용이 규칙에 어긋납니다.\n규칙에 어긋나는 내용을 바로 잡아주세요.", required : "반드시 입력하셔야 하는 사항입니다.", required_group : "이 항목들 중에 {requirenum}개 이상의 항목이 입력되어야 합니다.", notequal : "입력된 내용이 일치하지 않습니다.", invalid : "입력된 내용이 형식에 어긋납니다.", minbyte : "입력된 내용의 길이가 {minbyte}Byte 이상이어야 합니다.", maxbyte : "입력된 내용의 길이가 {maxbyte}Byte를 초과할 수 없습니다.", mincheck : "{mincheck}개의 항목이상으로 선택하세요.", maxcheck : "{maxcheck}개의 항목이하로 선택하세요.", minchar : "입력된 내용의 길이가 {minchar}자 이상이어야 합니다.", maxchar : "입력된 내용의 길이가 {maxchar}자를 초과할 수 없습니다.", sosu : "입력된 값은 소수점 {sosu} 자리 까지만 가능합니다." } /** *
    * default option
    * 
*/ this.DEFAULT_OPTION = { text : "trim", hidden : "trim" } /** *
    * default errordo
    * 
*/ this.DEFAULT_ERRORDO = { text : "focus", select : "focus", check : "focus", radio : "focus", file : "focus", hidden : "" } this.form = form; this.errObj = null; this.curObj = null; this.errMsg = this.ERRMSG["common"] != "" ? this.ERRMSG["common"]+"\n\n" : ""; this.errMode = 2; // all:1, one:2, one per object:3 } FormChecker.prototype.go = function() { var oldRequired = new Array; for (var i=0; i 128) ? 2 : 1; } if (elLen < minbyte) if (!this.raiseError(el,"minbyte")) return false; } if (maxbyte != null) { maxbyte = parseInt(maxbyte,10); var _tmp = el.value; var elLen = 0; for (j=0; j<_tmp.length; j++) { var chr = _tmp.charAt(j); elLen += (chr.charCodeAt() > 128) ? 2 : 1; } if (elLen > maxbyte) if (!this.raiseError(el,"maxbyte")) return false; } if (minchar != null) { minchar = parseInt(minchar, 10); var elLen = el.value.length; if (elLen < minchar) if (!this.raiseError(el,"minchar")) return false; } if (maxchar != null) { maxchar = parseInt(maxchar, 10); var elLen = el.value.length; if (elLen > maxchar) if (!this.raiseError(el,"maxchar")) return false; } if (match != null) { if (typeof this.form.elements[match] == "undefined") throw "Element '"+ match +"' is not found."; else if (el.value != this.form.elements[match].value) if (!this.raiseError(el,"notequal")) return false; } if (el.value != "" && option !== null) { var elOption = option.split(" "); for (var j in elOption) { var userFunc = eval("this.func_"+ elOption[j]); try { if (span !== null) { var _value = new Array(); for (var j = 0; j < span; j++) { if (typeof this.form.elements[i+j] == "undefined") throw (i+j) +"th Element is not found."; _value[j] = this.form.elements[i+j].value; } var value = _value.join(glue === null ? "" : glue); var tmpMsg = userFunc(el, value); if (tmpMsg !== true) if (!this.raiseError(el,tmpMsg)) return false; } else { var tmpMsg = userFunc(el); if (tmpMsg !== true) if (!this.raiseError(el,tmpMsg)) return false; } } catch(e) { throw "Option '"+ option +"' does not exist"; } } } if (el.value != "" && pattern !== null) { try { pattern = new RegExp(pattern); } catch (e) { throw "Invalid Regular Expression '"+ pattern +"'"; } if (!pattern.test(elValue)) if (!this.raiseError(el,"invalid")) return false; } } else if (elType == "check") { var mincheck = parseInt(el.getAttribute("MINCHECK"),10); var maxcheck = parseInt(el.getAttribute("MAXCHECK"),10); if (mincheck > 0 || maxcheck > 0) { var elCheck = this.form.elements[el.name]; var elCheckNum = 0; for (var j=0; j 0 && elCheckNum < mincheck) { if (!this.raiseError(el,"mincheck")) return false; } if (maxcheck > 0 && elCheckNum > maxcheck) { if (!this.raiseError(el,"maxcheck")) return false; } } }else if (elType == "radio") { var mincheck = parseInt(el.getAttribute("MINCHECK"),10); var maxcheck = parseInt(el.getAttribute("MAXCHECK"),10); if (mincheck > 0 || maxcheck > 0) { var elCheck = this.form.elements[el.name]; var elCheckNum = 0; for (var j=0; j 0 && elCheckNum < mincheck) { if (!this.raiseError(el,"mincheck")) return false; } if (maxcheck > 0 && elCheckNum > maxcheck) { if (!this.raiseError(el,"maxcheck")) return false; } } } } return !this.isErr; } FormChecker.prototype.destroy = function() { if (this.isErr == true) { alert(this.errMsg); var _tmp = this.errObj.getAttribute("errordo"); if (!_tmp) _tmp = this.DEFAULT_ERRORDO[this.getType(this.errObj)]; var onError = _tmp ? _tmp.split(" ") : []; for (var i in onError) { switch (onError[i]) { case "delete": this.errObj.value = ""; break; case "select": this.errObj.select(); break; case "focus": this.errObj.focus(); break; } } } this.errMsg = ""; this.errObj = null; this.curObj = null; } FormChecker.prototype.raiseError = function(el, type, elName) { var pattern = /\{([a-zA-Z0-9_]+)\}/i; var msg = this.ERRMSG[type] ? this.ERRMSG[type] : type; var elName = elName ? elName : this.getName(el); if (el.getAttribute("errmsg") != null) msg = el.getAttribute("errmsg"); if (pattern.test(msg) == true) { while (pattern.exec(msg)) msg = msg.replace(pattern, el.getAttribute(RegExp.$1)); } if (!this.errObj || this.errMode != 2) { if (this.curObj == el && el.getAttribute("errmsg") == null) { if (this.errMode == 1) this.errMsg += " - "+ msg +"\n"; } else if (this.curObj != el) { if (this.curObj) this.errMsg += "\n"; this.errMsg += "["+ elName +"]\n - "+ msg +"\n"; } } if (!this.errObj) this.errObj = el; this.curObj = el; this.isErr = true; return this.errMode == 2 ? false : true; } FormChecker.prototype.isValidElement = function(el) { return (el.name && el.tagName.toLowerCase().match(/^input|select|textarea$/i)) ? true : false; } FormChecker.prototype.isEmpty = function(el, type) { switch (type) { case "file": case "text": case "hidden": if (el.value == null || el.value == "" || el.value == " ") return true; break; case "select": if (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; for (var j=0; j eval(_sosu)) return false; } return true; } FormChecker.prototype.func_engnum_ = function(el) { var pattern = /^[a-zA-Z0-9_]+$/; return (pattern.test(el.value)) ? 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_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-6][0-5]?)-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/; var num = value ? value : el.value; return (pattern.exec(num)) ? true : "invalid"; } FormChecker.prototype.func_mobile = function(el,value) { var pattern = /^(01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/; var num = value ? value : el.value; return (pattern.exec(num)) ? true : "invalid"; } FormChecker.prototype.func_telephone = function(el,value) { var pattern = /^(0[1-6]?[0-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/; var num = value ? value : el.value; return (pattern.exec(num)) ? true : "invalid"; } FormChecker.prototype.func_isdate = function(el,value) { var pattern = /^([12][0-9]{3})-?([01][0-9])-?([0123][0-9])$/; var num = value ? value : el.value; return (pattern.exec(num)) ? true : "invalid"; } FormChecker.prototype.func_isdate6 = function(el,value) { var pattern = /^([0-9]{2})([01][0-9])([0123][0-9])$/; var num = value ? value : el.value; return (pattern.exec(num)) ? true : "invalid"; }