/** * 화면의 입력 또는 선택항목에 대해 * 지정된 validator 값에 따른 유효성 검사를 수행하는 공통함수 */ function validator(objectID, objectName, optionMessage) { var objectType = document.getElementById(objectID).tagName.toUpperCase(); var validatorList = $("#" + objectID).attr("validator").split("|"); var validator = null; var flagCheck = true; var message = ""; if(! validatorList.length) return; for(var i = 0; i < validatorList.length; i++) { validator = validatorList[i]; if(! validator.replace(/ /g, "").length) continue; if(validator.startWith("maxlength=")) validatorChecker = "maxlength"; else if(validator.startWith("fixlength=")) validatorChecker = "fixlength"; else validatorChecker = validator; switch(validatorChecker) { case "required" : if(objectType == "SELECT") { var selectedVal = $("#" + objectID).val(); selectedVal = selectedVal?selectedVal:''; selectedVal = selectedVal.replace(/ /g, ""); //if(! $("#" + objectID)[0].selectedIndex) { if(! selectedVal.length) { message = optionMessage ? optionMessage : "[{0}]은/는 필수 선택 항목입니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } } else if(objectType = "INPUT") { if(! $("#" + objectID).val().replace(/ /g, "").length) { message = optionMessage ? optionMessage : "[{0}]은/는 필수 입력 항목입니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } } break; case "numeric" : if(isNaN($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 숫자만 가능합니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "alpha" : var regExp = /[^a-zA-Z_\-]/g; if ($("#" + objectID).val().length > 0 && !regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 영문만 가능합니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "money" : var regExp = /^-?([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]+)?$/g; if ($("#" + objectID).val().length > 0 && !regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 숫자와 콤마만 가능합니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "alphaNumeric" : var regExp = /[^a-zA-Z0-9_.\-]/g; if ($("#" + objectID).val().length > 0 && regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 영문숫자만 가능합니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "notHangul" : var regExp = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/; if ($("#" + objectID).val().length > 0 && regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 한글은 포함할 수 없습니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "phone" : var regExp = /^[0-9|-]+$/; if ($("#" + objectID).val().length > 0 && !regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 숫자, -만 입력 가능합니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "date" : var regExp = /^\d{4}-\d{2}-\d{2}$/; if ($("#" + objectID).val().length > 0 && !regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 올바른 날짜 형식이 아닙니다\n다음과 같은 형식이어야 합니다. Y-m-d"; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "email" : var regExp = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/; if ($("#" + objectID).val().length > 0 && !regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 이메일 형식에 맞지 않습니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "hangulAlpha" : var regExp = /^[ㄱ-ㅎ|ㅏ-ㅣ|가-힣|a-z|A-Z]+$/; if ($("#" + objectID).val().length > 0 && !regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 한글, 영문만 입력 가능합니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "notTeuksu" : var regExp = /[~!@\#$%<>^&*()\-=+_\']/gi; if ($("#" + objectID).val().length > 0 && regExp.test($("#" + objectID).val())) { message = optionMessage ? optionMessage : "[{0}]은/는 특수문자는 포함할 수 없습니다."; alert(message.replaceVar([objectName])); $("#" + objectID).focus(); flagCheck = false; } break; case "fixlength" : var fixLength = parseFloat(validator.split("=")[1]); if($("#" + objectID).val().length) { if(fixLength != $("#" + objectID).val().getChrCnt()) { message = optionMessage ? optionMessage : "[{0}]은/는 {1}자리입니다."; alert(message.replaceVar([objectName, fixLength])); $("#" + objectID).focus(); flagCheck = false; } } break; case "maxlength" : var limitLength = parseFloat(validator.split("=")[1]); if(limitLength < $("#" + objectID).val().getChrCnt()) { message = optionMessage ? optionMessage : "[{0}]은/는 최대 {1}바이트를 초과할 수 없습니다.\n\n[한글:3바이트, 영문/숫자:1바이트]"; alert(message.replaceVar([objectName, limitLength])); $("#" + objectID).focus(); flagCheck = false; } break; default : alert("[개발자메세지] [" + validatorChecker + "]가 등록되지 않았습니다. 공통기능에 해당 기능을 구현해주십시오."); flagCheck = false; break; } if(! flagCheck) break; } return flagCheck; } function checkValidate (divId, msgObj) { var bResult = true; var chkObjs = $('#' + divId + ' [validator]'); for (var i = 0; i < chkObjs.length; i++) { if(!validator(chkObjs.eq(i).attr('id'), msgObj[chkObjs.eq(i).attr('id')])) { bResult = false; break; } } return bResult; };