From 8a7f0796eb3a4eb8aa4d1233253f51a4e82a13e1 Mon Sep 17 00:00:00 2001 From: leebeomjun Date: Wed, 19 Jul 2023 10:12:53 +0900 Subject: [PATCH] =?UTF-8?q?validation=20=EA=B4=80=EB=A0=A8=20=EC=9E=90?= =?UTF-8?q?=EB=B0=94=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/WEB-INF/jsp/include/tail.jsp | 3 +- .../js/fims/framework/cmm/cmmDateUtil.js | 42 ++--- .../js/fims/framework/cmm/cmmUtil.js | 158 ++++++++++++++++++ 3 files changed, 178 insertions(+), 25 deletions(-) create mode 100644 src/main/webapp/resources/js/fims/framework/cmm/cmmUtil.js diff --git a/src/main/webapp/WEB-INF/jsp/include/tail.jsp b/src/main/webapp/WEB-INF/jsp/include/tail.jsp index 8382c040..8b5e8cde 100644 --- a/src/main/webapp/WEB-INF/jsp/include/tail.jsp +++ b/src/main/webapp/WEB-INF/jsp/include/tail.jsp @@ -42,7 +42,8 @@ - + + diff --git a/src/main/webapp/resources/js/fims/framework/cmm/cmmDateUtil.js b/src/main/webapp/resources/js/fims/framework/cmm/cmmDateUtil.js index 395c34fa..e025a255 100644 --- a/src/main/webapp/resources/js/fims/framework/cmm/cmmDateUtil.js +++ b/src/main/webapp/resources/js/fims/framework/cmm/cmmDateUtil.js @@ -267,7 +267,7 @@ var DateUtil = { /** * 입력일의 이전일 계산 */ -window.getPrevDay = function(datestr, days) { +function getPrevDay(datestr, days) { if ( days == "0") return datestr; datestr = datestr.replace(/-/g, ""); if (datestr == "") return ""; @@ -281,7 +281,7 @@ window.getPrevDay = function(datestr, days) { /** * 입력일의 다음일 계산 */ -window.getNextDay = function(datestr, days) { +function getNextDay(datestr, days) { if ( days == "0") return datestr; datestr = datestr.replace(/-/g, ""); if (datestr == "") return ""; @@ -295,7 +295,7 @@ window.getNextDay = function(datestr, days) { /** * 해당월의 마지막날 */ -window.getLastDay = function(datestr) { +function getLastDay(datestr) { datestr = datestr.replace(/-/g, ""); if (datestr == "") return ""; var strNextMonth = window.addMonth(datestr, 1); @@ -310,8 +310,7 @@ window.getLastDay = function(datestr) { /** * 년, 월, 일을 입력 받아 Date String으로 변환 */ -window.getDatetime = function(nYear, nMonth, nDate) -{ +function getDatetime(nYear, nMonth, nDate){ var objDate = null; if (nYear.toString().trim().length >= 5) { @@ -339,8 +338,7 @@ window.getDatetime = function(nYear, nMonth, nDate) /** * 년 계산 */ -window.addYear = function(date, nOffSet) -{ +function addYear(date, nOffSet){ date = date.replace(/-/g, ""); var nYear = parseInt(date.substr(0, 4), 10) + nOffSet; var nMonth = parseInt(date.substr(4, 2), 10); @@ -351,8 +349,7 @@ window.addYear = function(date, nOffSet) /** * 월 계산 */ -window.addMonth = function(date, nOffSet) -{ +function addMonth(date, nOffSet) { date = date.replace(/-/g, ""); var nYear = parseInt(date.substr(0, 4), 10); var nMonth = parseInt(date.substr(4, 2), 10) + nOffSet; @@ -363,8 +360,7 @@ window.addMonth = function(date, nOffSet) /** * 일 계산 */ -window.addDate = function(date, nOffSet) -{ +function addDate(date, nOffSet) { date = date.replace(/-/g, ""); var nYear = parseInt(date.substr(0, 4), 10); var nMonth = parseInt(date.substr(4, 2), 10); @@ -375,7 +371,7 @@ window.addDate = function(date, nOffSet) /** * 이전해 계싼 */ -window.getPrevYear = function(datestr, year) { +function getPrevYear(datestr, year) { if ( year == "0") return datestr; datestr = datestr.replace(/-/g, ""); if (datestr == "") return ""; @@ -389,7 +385,7 @@ window.getPrevYear = function(datestr, year) { /** * 다음해 계산 */ -window.getNextYear = function(datestr, year) { +function getNextYear(datestr, year) { if ( year == "0") return datestr; datestr = datestr.replace(/-/g, ""); if (datestr == "") return ""; @@ -403,7 +399,7 @@ window.getNextYear = function(datestr, year) { /** * select 연도 */ -window.setYearCombo = function(id,isAll,isSelect,range){ +function setYearCombo(id,isAll,isSelect,range){ var now = new Date(); var dayYear = now.getFullYear(); var str = ""; @@ -428,7 +424,7 @@ window.setYearCombo = function(id,isAll,isSelect,range){ /** * select 연도(올해이후) */ -window.setYearComboNext = function(id,isAll,isSelect,range){ +function setYearComboNext(id,isAll,isSelect,range){ var now = new Date(); var dayYear = now.getFullYear(); var str = ""; @@ -454,7 +450,7 @@ window.setYearComboNext = function(id,isAll,isSelect,range){ /** * select 년월 */ -window.setYearMonCombo = function(id,isAll,isSelect){ +function setYearMonCombo(id,isAll,isSelect){ var day = new Date(); var dayYear = day.getFullYear().toString(); var now = day.getMonth()+1; @@ -478,7 +474,7 @@ window.setYearMonCombo = function(id,isAll,isSelect){ /** * 문자열 날짜 숫자로 변경 */ -window.stringDateToNum = function(paramStr){ +function stringDateToNum(paramStr){ var str = paramStr.replace(/-/g, ""); var dateNum = ""; @@ -510,7 +506,7 @@ window.stringDateToNum = function(paramStr){ * @param2 day2 : 일자 8자리 - 'YYYYMMDD', 'YYYY-MM-DD', 'YYYY/MM/DD', etc * @return 두 일자간의 일수 */ -window.calcDayCount = function(day1, day2) { +function calcDayCount(day1, day2) { day1 = day1.replace(/-/g, ""); day2 = day2.replace(/-/g, ""); if (day1 == "" || day2 == "") return ""; @@ -524,7 +520,7 @@ window.calcDayCount = function(day1, day2) { /** * Get 요일 */ -window.getWeek = function(datestr, isConvert){ +function getWeek(datestr, isConvert){ datestr = datestr.replace(/-/g, ""); var dateObj = window.getDateObject(datestr); var week = dateObj.getDay() + 1; @@ -544,7 +540,7 @@ window.getWeek = function(datestr, isConvert){ //----------------------------------------------------------- // 현재년월 구하기 //----------------------------------------------------------- -window.getYearMonth = function() { +function getYearMonth() { var today = getToday(); var yearMonth = today.substr(0, 7); @@ -558,8 +554,7 @@ window.getYearMonth = function() { * @param astrNotNull: nn:not null, "": null 허용 * @return true/false **/ -function blnOkDate(astrValue, astrNotNull) -{ +function blnOkDate(astrValue, astrNotNull) { var arrDate; if (astrValue=='') @@ -599,8 +594,7 @@ function blnOkDate(astrValue, astrNotNull) * * @param field INPUT 객체 **/ -function openCalendar(dateField) -{ +function openCalendar(dateField) { var obj = eval("document." + dateField); if (obj.value == "") diff --git a/src/main/webapp/resources/js/fims/framework/cmm/cmmUtil.js b/src/main/webapp/resources/js/fims/framework/cmm/cmmUtil.js new file mode 100644 index 00000000..ddee1eb3 --- /dev/null +++ b/src/main/webapp/resources/js/fims/framework/cmm/cmmUtil.js @@ -0,0 +1,158 @@ +/************************************************************************** +* validation +**************************************************************************/ + +/** + * 문자열이 숫자형인지의 여부를 반환한다. + * @param exceptChar - 추가 허용할 문자 + * @return 숫자형여부 + */ +function isNumber(str, exceptChar) { + return (/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/).test(str.replaceAll(exceptChar,"")) ? true : false; +}; + +// 날짜체크 +function isDate(str) { + + if(str.length != 8){ + return false; + } + + if (!isNumber(str, "")) { + return false; + } + + // 숫자, length 확인 + var year = str.substring(0,4); + var month = str.substring(4,6); + var day = str.substring(6,8); + + // 유효날짜 확인 + if (year>="0001" && year<="9999" && month>="01" && month<="12") { + febDays = "29"; + if ((parseInt(year,10) % 4) == 0) { + if ((parseInt(year,10) % 100) == 0 && (parseInt(year,10) % 400) != 0){ + febDays = "28"; + } + }else{ + febDays = "28"; + } + if (month=="01" && day>="01" && day<="31") return true; + if (month=="02" && day>="01" && day<=febDays) return true; + if (month=="03" && day>="01" && day<="31") return true; + if (month=="04" && day>="01" && day<="30") return true; + if (month=="05" && day>="01" && day<="31") return true; + if (month=="06" && day>="01" && day<="30") return true; + if (month=="07" && day>="01" && day<="31") return true; + if (month=="08" && day>="01" && day<="31") return true; + if (month=="09" && day>="01" && day<="30") return true; + if (month=="10" && day>="01" && day<="31") return true; + if (month=="11" && day>="01" && day<="30") return true; + if (month=="12" && day>="01" && day<="31") return true; + return false; + } + + + return true; +} + + + +/** + * 문자열이 지정한 최소길이 이상인지의 여부를 반환한다. + * @param minLen - 최소길이 + * @return 최소길이 이상인지의 여부 + */ +function isMin(str, minLen) { + return str.length >= minLen; +}; + +/** + * 문자열이 지정한 최대길이 이하인지의 여부를 반환한다. + * @param maxLen - 최대길이 + * @return 최대길이 이하인지의 여부 + */ +function isMax(str, maxLen) { + return str.length <= maxLen; +}; + +/** + * 문자열이 지정한 최소바이트수 이상인지의 여부를 반환한다. + * @param minByte - 최소바이트수 + * @return 최소바이트수 이상인지의 여부 + */ +function isMinByte(str, minByte) { + return getByte(str) >= minByte; +}; + +/** + * 문자열이 지정한 최대바이트수 이하인지의 여부를 반환한다. + * @param maxByte - 최대바이트수 + * @return 최대바이트수 이하인지의 여부 + */ +function isMaxByte(str, maxByte) { + return getByte(str) <= maxByte; +}; + + +/** + * 문자열이 영어만으로 구성되어 있는지의 여부를 반환한다. + * @param exceptChar - 추가 허용할 문자 + * @return 영어만으로 구성되어 있는지의 여부 + */ +function isEng(str, exceptChar) { + return (/^[a-zA-Z]+$/).test(str.replaceAll(exceptChar,"")) ? true : false; +}; + +/** + * 문자열이 숫자와 영어만으로 구성되어 있는지의 여부를 반환한다. + * @param exceptChar - 추가 허용할 문자 + * @return 숫자와 영어만으로 구성되어 있는지의 여부 + */ +function isEngNum(str, exceptChar) { + return (/^[0-9a-zA-Z]+$/).test(str.replaceAll(exceptChar,"")) ? true : false; +}; + +/** + * 이메일 주소의 유효성 여부를 반환한다. + * @return 유효성 여부 + */ +function isEmail(str) { + return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(str); +}; + +/************************************************************************** +* String util +**************************************************************************/ +/** + * 문자열의 byte 길이를 반환한다. + * @return 문자열의 byte 길이 + */ +function getByte(str) { + + if ( str == null || str.length == 0 ) { + return 0; + } + var size = 0; + for ( var i=0, len=str.length ; i < len ;i++ ) { + var charCode = str.charCodeAt(i), + charSize = 0; + + if ( charCode <= 0x00007F ) { //127 + charSize = 1; + } else if ( charCode <= 0x0007FF) { //2047 + charSize = 2; + } else if ( charCode <= 0x00FFFF) { //65535 + charSize = 3; + } else { + charSize = 4; + } + size += charSize; + } + return size; +}; + + + + +