/** * 프로그램 명 : spider 웹페이지 로딩시 기본 체크 모듈 * 일관성을 위하여 기본 적용되는 옵션들이 있고, 추가해주는 부분은 db에서 추가 하게 되어있다. db셋팅이 없으면 코딩으로 추가 하면 됨. * 작성자 : 오재훈 * 사용된 속성 * 1. nullable =false 이면 필수 요소임 (* nullable=false인 테그에 collname = "필드이름" 속성을 주고 값을 입력안하고 submit()시 '필수입력사항입니다[필드이름]' 경고얼럿뜸.) * 2. chartype : 입력받을 문자열 셋 * |숫자만 | 한글만 | 한글숫자 | 한글영어 | 한글영어숫자 | 영어만 | 영어숫자 | 실수 금액 |정수 금액 | * |onlynum | kor | kornum | koreng | korengnum | Eng | engnum | floatmoney | money | * 2. userchar = "@&-" 이고 chartype이 존재하면 chartype + "@,&,-" 만 입력 가능하도록 한다. (chartype이 존재하여야지 사용됨) 3. maskform #과 구분자로 이루어진 마스크. #은 값들이고 구분자가 각 위치에 들어가게 됨 * ex : 123456789 maskform="##-##,##.##/#" 결과 12-34,56.78/9 * 사용자 마스크를 따로 적용 할 경우 maskform="usermask"로 셋팅하여 마스크를 적용하면 프레임워크에서 spidersubmit()시에 숫자,영어 이외의 문자를 삭제함. * 4. maximum : 최대값 * 5. minimum : 최소값 * 6. disablecss : input창의 활성화,비활성화 속성 정의 * 7. maxbyte : 최대 입력 바이트 길이 계산. * 8. format : deprecate 함수 호출 형식으로 바뀜 프레임 워크에 있는 함수 호출(주민번호,이메일,사업자번호. 속성값 : psn,email,crn,date) * 9. uppercase : 대문자로 변환. * 10. lowercase : 소문자로 변환. */ document.write(''); document.write(''); /** * 다국어 alert() 메세지를 출력 * ex : i18nAlert('I18NUtil.getLabel(localeCode, "IBA00001","개별1회이체한도금액이 초과하였습니다.")') (스크립틀릿임.) * @param msg : 다국어 메세지 * @return : alert(msg) 메세지 */ function i18nAlert(msg, form, field, fldClear){ var alertElem = document.createElement("span"); alertElem.innerHTML = msg; if ("" == alertElem.outerText || null == alertElem.outerText || "undefined" == alertElem.outerText){ uf_alert(msg, 401, 206, form, field, fldClear); }else{ uf_alert(alertElem.outerText, 401, 206, form, field, fldClear); } } /** * 다국어 confirm() 메세지를 출력 * ex : i18nConfirm('I18NUtil.getLabel(localeCode, "COA00001","수정하시겠습니까?")') (스크립틀릿임.) * @param msg : 다국어 메세지 * @return : alert(msg) 메세지 */ function i18nConfirm(msg){ var confirmElem = document.createElement("span"); confirmElem.innerHTML = msg; if ("" == confirmElem.outerText || null == confirmElem.outerText || "undefined" == confirmElem.outerText){ return confirm(msg); }else{ return confirm(confirmElem.outerText); } } //----------------------------------- 페이지 initialize 관련 함수 시작 ------------------------------------------------// /** * html 페이지 로딩후 최초 실행하는 스크립트. */ initializeHtmlPage(); /** * 최초 로딩시 페이지 초기 설정 */ function initializeHtmlPage() { for ( var i = 0 ; i < document.forms.length ; i++) { document.forms[i].initialize = initializeHtmlForm; document.forms[i].initialize(); } // a 태그 "#" 변경처리. 2008.10.30 웹케시 이재호 //var elemLinks = document.all.tags('A'); var elemLinks = $('a'); for (var idxLink=0; idxLink < elemLinks.length; idxLink++) { var obj = elemLinks[idxLink]; var link = obj.href; if(link.substring(link.length-1) == "#") obj.href = "#_dummy"; } // 예금펀드 금융상품몰 상품정보의 태그 안보이게... /*var caps = document.all.tags('CAPTION'); for(i=0; i < caps.length; i++){ var obj = caps[i]; obj.style.display = 'none'; }*/ } /** * 호출된 폼마다 셋팅하기. *
initialize시 셋팅하는 정보 : 필수 요소(css),mask,letter type */ function initializeHtmlForm() { //spiderSubmit 할당 //this.spiderSubmit = formSubmitValidation; this.spiderSubmit = formSubmit; this.submitstat = "false"; // 입력필드 하나인 경우 엔터키 입력시 리로드 방지 try{ var dummy_e = document.createElement("input"); dummy_e.setAttribute("type", "text"); dummy_e.setAttribute("title", "_DUMMY_INPUT"); dummy_e.setAttribute("name", "_DUMMY_INPUT"); dummy_e.style.display = "none"; this.appendChild(dummy_e); }catch(e){} for (var i = 0 ; i < this.elements.length ; i++) { if ($(this.elements[i]).is('input')) { //mask가 있을경우 #은 값을 의미함. if (this.elements[i].getAttribute("maskform") != undefined && this.elements[i].getAttribute("maskform") != "") { if(this.elements[i].getAttribute("maskform") != "usermask") initSetMaskUp(this.elements[i]);//mask 타입(ex : ####/##/## , ####-##-## , ######-####### , ###-##-##### , ...) } //문자 타입이 있을경우 if (this.elements[i].getAttribute("chartype") != undefined) { initSetLetterType(this.elements[i]);//문자 셋(english,korean,english+number, number, floatmoney,int)타입 } //속성이 있을경우 if ( this.elements[i].getAttribute("disablecss") != undefined) { initSetAttribute(this.elements[i]); } //uppercase가 있을 경우 if (this.elements[i].getAttribute("uppercase") != undefined){ if(this.elements[i].getAttribute("chartype") == undefined){ $(this.elements[i]).bind('keyup', function(){ this.value=this.value.toUpperCase(); }); } } //lowercase가 있을 경우 if (this.elements[i].getAttribute("lowercase") != undefined){ if(this.elements[i].getAttribute("chartype") == undefined){ initSetUpperLower(this.elements[i]) } } } if(this.elements[i].onkeyup == undefined){ this.elements[i].onkeyup = setOverSetFocus; } } } /** * uppercase, lowercase 설정시 keyPress시 이벤트 발생. */ function initSetUpperLower(elem) { if($(elem).attr("onkeypress") == undefined){ $(elem).bind('keypress', function(){ setUpperLowerCase(); }); } } function setUpperLowerCase() { var pKey = String.fromCharCode(event.keyCode); if($(event.srcElement).attr('uppercase') != undefined) { if(event.keyCode >= 97 && event.keyCode <= 122){ //event.srcElement.value = (event.srcElement.value + pKey).toUpperCase(); event.srcElement.value = event.srcElement.value.toUpperCase(); //event.returnValue=false; } } if($(event.srcElement).attr('lowercase') != undefined) { if(event.keyCode >= 65 && event.keyCode <= 90){ //event.srcElement.value = (event.srcElement.value + pKey).toLowerCase(); event.srcElement.value = event.srcElement.value.toLowerCase(); //event.returnValue=false; } } } /** * maxLength, maxbyte 설정시 keyUp시 이벤트 발생. */ function initSetMaxLength(elem) { if(elem.onkeyup == undefined){ elem.onkeyup = setOverSetFocus; } } /** * maxLength, maxbyte 설정시 최대값보다 더 들어왔을시 자동 포커스 이동. *
ex : setOverSetFocus() */ function setOverSetFocus() { //this 개체가 속한 폼이름 가져오기 var thisFrm = eval(this.parentElement); while("form" != thisFrm.tagName.toString().toLowerCase()) { thisFrm = eval(thisFrm.parentElement); } var nextFocus = this; var eleValue = this.value; //다음 포커스 타겟 가져오기. for (var i = 0 ; i < thisFrm.elements.length ; i++) { if ($(this).attr('auto-fcs') != undefined && $(this).attr('auto-fcs')=='no') break; //현재 this값이 선택된 elements이면 다음으로 이동될 포커스를 가져오기 위한 로직수행. if(this == thisFrm.elements[i]) { if(thisFrm.elements[i].nextfocus != undefined && thisFrm[thisFrm.elements[i].nextfocus] != undefined) { //nextfocus 속성이 있을경우 nextfocus값을 다음 포커스로 잡는다. nextFocus = thisFrm[thisFrm.elements[i].nextfocus]; break; } //elements가 undefined 될때 까지 수행함. while(thisFrm.elements[++i] != undefined) { //현재 elements의 부모중의 속성이 display = none이면 다음 포커스 타겟을 가져온다. var targetCursor = eval(thisFrm.elements[i].parentElement); while("form" != targetCursor.tagName.toString().toLowerCase()) { if(targetCursor.parentElement.style.display == "none") break; targetCursor = eval(targetCursor.parentElement); } if(targetCursor.parentElement.style.display == "none") continue; //elements타입이 input (text,radio,checkbox), textarea, select 일경우 다음 포커스 obj저장. // /ibs/jsp/common/com_tranpwdreg_i.jsp에서 시크릿트 카드 입력하는 부분에 display가 none인 경우 제외 (style = "tx h") if(thisFrm.elements[i].tagName.toString().toLowerCase() == "input" && ((thisFrm.elements[i].type == "text" && thisFrm.elements[i].className != "tx h" )|| ( thisFrm.elements[i].type == "password" && thisFrm.elements[i].className != "tx h" )) || (thisFrm.elements[i].tagName.toString().toLowerCase() == "textarea" && thisFrm.elements[i].className != "tx h" )|| (thisFrm.elements[i].tagName.toString().toLowerCase() == "select" && thisFrm.elements[i].className != "tx h" )) { // nextFocus 객체가 활성화 되지 않은 상태이면 다음 객체로.... if(!(thisFrm.elements[i].disabled==true || thisFrm.elements[i].readonly != undefined || thisFrm.elements[i].style.display == "none")){ nextFocus = thisFrm.elements[i]; break; } } } } } if(nextFocus == this) this.autoTab = "off"; // 엔터키 입력시 처리. 다음포커스로이동. 다음 포커스 없을경우 서브밋. if(event.keyCode == 13){ try{ if($('.maskFilm').css("display") != "block"){ if(this.type == "text" || this.type == "password" || this.tagName.toString().toLowerCase() == "select"){ if(nextFocus == this){ if(ENTFUNC != ""){ eval(ENTFUNC); return; }else{ if($(this).attr('name')=='W_OTP_OCRN_NO') { return; } if($('#ibk_layer_main').is(':visible')) { if(typeof uf_submitBylayer == "function"){ uf_submitBylayer(); return; } } else if(typeof uf_submit == "function"){ uf_submit('M'); return; } } }else{ } } } }catch(e){} } //포커스 이동. maxLength 2147483647은 maxLength의 값을 주지 않았을경우 기본적으로 주는 최대값. if(($(this).attr('maxbyte') != undefined && $(this).attr('maxbyte') != "undefined") && ($(this).attr('maxLength') != undefined && $(this).attr('maxLength') != "undefined") ) { //1. maxbyte와 maxLength를 둘다 선택 하였을때.. if((this.maxLength < this.value.length) || ($(this).attr('maxbyte') < calculate_msglen(this.value))) { this.blur(); this.value = ""; this.focus(); this.value = cutStringToByte(eleValue, $(this).attr('maxbyte')); } }else if(($(this).attr('maxbyte') == undefined || $(this).attr('maxbyte') == "undefined") && ($(this).attr('maxLength') != undefined && $(this).attr('maxLength') != "undefined")) { //2. maxLength만 설정했을때.. //한글이 포함된 chartype경우는 maxLength-2 값을 넘긴다. 20080721 김재범 추가. if($(this).attr("chartype") == "kor" || $(this).attr("chartype") == "kornum" || $(this).attr("chartype") == "koreng" || $(this).attr("chartype") == "korengnum") { var _maxlen = this.maxLength-2; if(this.getAttribute("fullchar") == "false") _maxlen = this.maxLength; if((this.getAttribute("fullchar") == "false" && _maxlen < calculate_msglen(this.value)) || (this.getAttribute("fullchar") != "false" && (_maxlen/2) < this.value.length)){ this.blur(); this.value = ""; this.focus(); if(this.getAttribute("fullchar") == "false") this.value = cutStringToByte(eleValue, _maxlen); else this.value = eleValue.substring(0,(this.maxLength-2)/2); } } else if(this.maxLength <= this.value.length) { this.value = eleValue.substring(0, this.maxLength); } }else if(($(this).attr('maxbyte') != undefined || $(this).attr('maxbyte') != "undefined") && this.maxLength == 2147483647) { //3. maxByte만 설정했을때.. if($(this).attr('maxbyte') < calculate_msglen(this.value) ) { this.blur(); this.value = ""; this.focus(); this.value = cutStringToByte(eleValue, $(this).attr('maxbyte')); } } if($(this).attr('chartype') == "money") this.value = changeIntMoneyType(this.value); if($(this).attr('chartype') == "floatmoney") this.value = changeIntFloatMoneyType(this.value); } /** * 문자열을 Byte길이로 잘라옴. *
ex : cutStringToByte(form1.name.value, bytelength) * @param strValue : 바이트 길이로 자를 문자열 * @param cutByte : 바이트 길이 */ function cutStringToByte(strValue,cutByte) { var sumLength = 0; var resultStr = ""; for(var i= 0;i < strValue.length; i++) { if( escape(strValue.charAt(i)).length > 3 ) { strLength = 2; } else if (strValue.charAt(i) == '<' || strValue.charAt(i) == '>') { strLength = 4; } else { strLength = 1 ; } if ( cutByte < (sumLength + strLength) ) { break; } sumLength += strLength; resultStr += strValue.charAt(i); } return resultStr; } /** * 속성에 따른 input창 상태 셋팅. *
ex : initSetAttribute(form1.name) * @param elem : 이벤트를 셋팅할 element */ function initSetAttribute(elem) { if (elem.disablecss == "true") { elem.disabled = true; if(elem.type.toString().toLowerCase() == "text") { elem.className = "frameworkDisabled"; } } } /** * 숫자열 마스크 씌우기 *
ex : initSetMaskUp(form1.name) * @param elem : 마스크를 셋팅할 element */ function initSetMaskUp(elem) { elem.onkeypress = setKeyInputNumberOnly; if(elem.onfocus == undefined) elem.onfocus = filterGetNumberOnly; if(elem.onblur == undefined) elem.onblur = setInitMaskUp; } /** * 주민 사업자 번호 onkeyup이벤트시 마스크 씌우기 *
ex : psnCrnMaskup(form1.name) * @param elem : 마스크를 셋팅할 element */ function psnCrnMaskup(elem) { var data = getOnlyNumberFormat(elem.value); elem.value = data; if(data.length <= 6) { return; } else if(data.length > 6 && data.length <= 7) { elem.value = data.substr(0,6) + "-" + data.substring(6); } else if (data.length > 7 && data.length <= 10) { elem.value = data.substr(0,3) + "-" + data.substr(3,2) + "-" + data.substring(5); } else if (data.length > 10 && data.length <= 13) { elem.value = data.substr(0,6) + "-" + data.substring(6); } else if(data.length > 13) { elem.value = data.substr(0,6) + "-" + data.substr(6,7); } } /** * 페이지 초기화시에 onfocus 이벤트에 할당되면 이 Elemnent에 숫자외의 문자("," , "/" , "-")는 focus시에 제거됨 */ function filterGetNumberOnly() { this.value = getOnlyNumberFormat(this.value); this.select(); } /** * 문자열에서 숫자만 빼오기 체크 로직 * ex : getOnlyNumberFormat(form1.name.value) * @param sv : 변환할 String 값 */ function getOnlyNumberFormat(sv) { if(sv == null) return; var temp=""; var ret = ""; for(var index = 0 ; index < sv.length ; index++) { temp = parseInt(sv.charAt(index), 10); if( temp >= 0 || temp <= 9) { ret +=temp; } } return ret; } /** * 페이지 초기화시에 마스크 설정값대로 변환하기 */ function setInitMaskUp() { var mask = this.maskform; if(this.value == "") return; var inputV = getOnlyNumberFormat(this.value); for ( var i = 0 ; i < mask.length ; i++) { if ( mask.substring(i,i+1) != "#" ) inputV = inputV.substring(0,i) + mask.substring(i,i+1) + inputV.substring(i); } this.value = inputV; } /** * 페이지 초기화시 숫자만 입력받기 */ function setKeyInputNumberOnly() { if(event.shiftKey == true) event.returnValue = false; if ( event.keyCode < 48 || event.keyCode > 57 )//숫자 키코드값 { // enter, tab, backspace 방향키(앞,뒤)는 예외처리 if(event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39) { return true; } event.returnValue = false; } var pKey = String.fromCharCode(event.keyCode); if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } /** * 숫자만 입력하는 INPUT창에 붙여넣기를 했을 경우에도 숫자만 입력 되게. */ function setPasteNumberOnly() { var clipdata = window.clipboardData.getData("Text"); clipdata = clipdata.replace(/-/gi,""); if(clipdata.match(/^\d+$/ig) == null){ //alert("형식이 맞지 않습니다."); return false; } var element = document.all.tags('INPUT'); for(var idx=0; idx < element.length; idx++){ var obj = element[idx]; if(obj.onpaste && obj == this){ obj.value = clipdata.substring(0,clipdata.length); } } event.returnValue = false; } /** * 페이지 초기화시에 언어 및 숫자형 입력 및 표현 처리. * @param elem : 이벤트를 셋팅할 element */ function initSetLetterType(elem) { elem.style.imeMode = "disabled"; if (elem.getAttribute("chartype") == "kor")//한글만 { elem.style.imeMode = "active"; if($(elem).attr("onkeypress") == undefined){ $(elem).bind('keypress', function(){ $(this).val($(this).val().replace(/[^ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/gi, "")); }); } } else if (elem.getAttribute("chartype") == "kornum")//한글+숫자 { elem.style.imeMode = "active"; if($(elem).attr("onkeypress") == undefined){ $(elem).bind('keypress', function(){ $(this).val($(this).val().replace(/[^ㄱ-ㅎ|ㅏ-ㅣ|가-힣|0-9]/gi, "")); }); } } else if (elem.getAttribute("chartype") == "koreng")//한글+영문 { elem.style.imeMode = "active"; if($(elem).attr("onkeypress") == undefined){ $(elem).bind('keypress', function(){ $(this).val($(this).val().replace(/[^ㄱ-ㅎ|ㅏ-ㅣ|가-힣|a-z]/gi, "")); }); } } else if (elem.getAttribute("chartype") == "korengnum")//한글+영문+숫자 { elem.style.imeMode = "active"; if($(elem).attr("onkeypress") == undefined){ if($(elem).attr("userchar") != undefined){ var _regexpStr = getUserChar($(elem), '^ㄱ-ㅎ|ㅏ-ㅣ|가-힣|a-z|0-9|'); $(elem).bind('keypress', function(){ $(this).val($(this).val().replace(eval('/['+_regexpStr +']/gi'), "")); }); } else { $(elem).bind('keypress', function(){ $(this).val($(this).val().replace(/[^ㄱ-ㅎ|ㅏ-ㅣ|가-힣|a-z|0-9]/gi, "")); }); } } } else if (elem.getAttribute("chartype") == "eng")//영어만 { if($(elem).attr("onkeyup") == undefined){ $(elem).bind('keyup', function(){ $(this).val($(this).val().replace(/[^a-z]/gi, "")); }); } } else if (elem.getAttribute("chartype") == "engnum")//영어+숫자 { elem.style.imeMode = "disabled"; if($(elem).attr("onkeypress") == undefined){ var _regexpStr = getUserChar($(elem), '^a-z|0-9'); $(elem).bind('keyup', function(){ $(this).val($(this).val().replace(eval('/['+_regexpStr +']/gi'), "")); }); } } else if (elem.getAttribute("chartype") == "float")//실수형 { if($(elem).attr("onkeyup") == undefined){ $(elem).bind('keyup', function(){ $(this).val($(this).val().replace(/[^0-9\\.\\-]/gi, "")); }); } } else if (elem.getAttribute("chartype") == "int")//정수형 { if($(elem).attr("onkeyup") == undefined){ $(elem).bind('keyup', function(){ $(this).val($(this).val().replace(/[^0-9\\-]/gi, "")); }); } } else if (elem.getAttribute("chartype") == "onlynum")//오직 숫자만 { if($(elem).attr("onkeyup") == undefined) $(elem).bind('keyup', function(){ $(this).val($(this).val().replace(/[^0-9]/g, "")); }); if($(elem).attr("onpaste") == undefined) $(elem).bind('paste', function(){ $(this).val($(this).val().replace(/[^0-9]/g, "")); }); } else if (elem.getAttribute("chartype") == "money")//정수로만 된 아주 기본적인 금액 표시 { if($(elem).attr("onkeyup") == undefined){ $(elem).bind('keyup', function(){ $(this).val($(this).val().replace(/[^0-9\\,\\-]/gi, "")); }); } if($(elem).attr("onblur") == undefined){ $(elem).bind('blur', function(){ $(this).val($(this).val().toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); }); } elem.style.textAlign="right"; } else if (elem.getAttribute("chartype") == "floatmoney") { if($(elem).attr("onkeyup") == undefined){ $(elem).bind('keyup', function(){ $(this).val($(this).val().replace(/[^0-9\\.\\,\\-]/gi, "")); }); } if($(elem).attr("onblur") == undefined){ $(elem).bind('blur', function(){ $(this).val($(this).val().toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); }); } elem.style.textAlign="right"; } } /** * 동적 정규식을 위한 userChar 리턴 */ function getUserChar(obj, _regexpStr) { if (obj != undefined && obj.attr("userchar") != undefined && '' != obj.attr("userchar")) { var _userKey = obj.attr("userchar"); for(i=0;i< _userKey.length;i++) { _regexpStr += '\\'+_userKey.charAt(i); } } return _regexpStr; } /** * 페이지 초기화시 -,숫자 입력받기( - 키코드값 189) */ function setKeydownMoney() { if(event.shiftKey == true) event.returnValue = false; if ( event.keyCode < 48 || event.keyCode > 57 ) //숫자 키코드값 { if(event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 189 || event.keyCode == 46) { return true; } event.returnValue = false; } } /** * 페이지 초기화 시에 금액 형태일 경우 키 입력시 금액 형태로 전환 */ function setKeypressMoney() { var ev = event.srcElement; var pKey = String.fromCharCode(event.keyCode); var tempV = ev.value; if(tempV.length > 0){ var stat = true; while(stat) { if(tempV.length > 0 && tempV.substring(0,1)==0) { tempV = tempV.substr(1); } else { stat = false; } } } var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})'); tempV = tempV;// + pKey; tempV = tempV.replace(/\,/g, ""); while(moneyReg.test(tempV)) { tempV = tempV.replace(moneyReg, '$1,$2'); } ev.value = tempV; if(event.keyCode == 9){ev.select();} //event.returnValue=false; } /** * 스트링값을 정수형 머니 형태로 변환 *
ex : changeIntMoneyType("1100000") 리턴되는 데이타 : 1,100,000 * @param data : 변환할 String 데이타 * @return 금액 형태로 변환된 스트링 */ function changeIntMoneyType(data) { var tempV = data; var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})'); tempV = tempV.replace(/\,/g, ""); try{ if(tempV != '') tempV = parseInt(tempV).toString(); }catch(e){} while(moneyReg.test(tempV)) { tempV = tempV.replace(moneyReg, '$1,$2'); } return (tempV == 'NaN') ? 0 : tempV; } function changeIntFloatMoneyType(data) { var tempV = data; var floatnum = "" if(tempV.indexOf(".") != -1) { floatnum = tempV.substring(tempV.indexOf("."));// + pKey; tempV = tempV.substring(0,tempV.indexOf(".")); } else { tempV = tempV;// + pKey; } var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})'); tempV = tempV.replace(/\,/g, ""); while(moneyReg.test(tempV)) { tempV = tempV.replace(moneyReg, '$1,$2'); } tempV = tempV+floatnum; return tempV; } /** * 실수형 금액 입력제어 스크립트. 숫자 , . , - 값만 입력받음. 소수점 두째 자리까지만 입력됨 */ function setKeydownFloatMoney() { if(event.shiftKey == true) event.returnValue = false; var floatindex = event.srcElement.value.indexOf("."); if(floatindex != -1) { var floatNum = event.srcElement.value.substring(floatindex+1); if (event.keyCode == 8 ) return; else if (floatNum.length > 1 ) event.returnValue = false; } if ( event.keyCode < 48 || event.keyCode > 57 ) //숫자 키코드값 { if( event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 189 || event.keyCode == 46) { return; } else if( event.keyCode == 190 && floatindex == -1 ) { return } event.returnValue = false; } } /** * 키 입력시 float 타입의 금액 형태로 전환 */ function setFloatMoney() { var ev = event.srcElement; var pKey = String.fromCharCode(event.keyCode); var tempV = ev.value; var floatnum = "" if(tempV.indexOf(".") != -1) { floatnum = tempV.substring(tempV.indexOf("."));// + pKey; tempV = tempV.substring(0,tempV.indexOf(".")); } else { tempV = tempV;// + pKey; } var moneyReg = new RegExp('(-?[0-9]+)([0-9]{3})'); tempV = tempV.replace(/\,/g, ""); while(moneyReg.test(tempV)) { tempV = tempV.replace(moneyReg, '$1,$2'); } ev.value = tempV+floatnum; if(event.keyCode == 9){ev.select();} event.returnValue=false; } /** * 키 입력시 한글만 입력받기 */ function setLetterKoreanOnly() { var pKey = String.fromCharCode(event.keyCode); // 스페이스 허용 if(event.keyCode != 32 && !((pKey.charCodeAt() > 0x3130 && pKey.charCodeAt() < 0x318F) || (pKey.charCodeAt() >= 0xAC00 && pKey.charCodeAt() <= 0xD7A3))) { event.returnValue=false; delete eReg; } if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } /** * 키 입력시 한글,숫자 입력받기 */ function setLetterKorNumOnly() { var pKey = String.fromCharCode(event.keyCode); // 스페이스 허용 if(event.keyCode != 32 && !((pKey.charCodeAt() > 0x3130 && pKey.charCodeAt() < 0x318F) || (pKey.charCodeAt() >= 0xAC00 && pKey.charCodeAt() <= 0xD7A3) || !setKeyInputNumberOnly())) { event.returnValue=false; delete eReg; } if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } /** * 키 입력시 영문,숫자 입력받기================================== */ function setLetterEngNumOnly() { var pKey = String.fromCharCode(event.keyCode); var eReg = /[a-zA-Z]/g; var intReg = /[0-9\\-]/g;; // 스페이스 허용 if(event.keyCode != 32 && (pKey!="\r" && !eReg.test(pKey)) && !intReg.test(pKey)) { event.returnValue=false; delete eReg; delete intReg; } //alert("event.srcElement.userchar : "+event.srcElement.userchar); setUpperLowerCase(); if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } /** * 키 입력시 한글,영어만 입력받기 */ function setLetterKorEngOnly() { var pKey = String.fromCharCode(event.keyCode); var eReg = /[a-zA-Z]/g; // 스페이스 허용 if(event.keyCode != 32 && !((pKey.charCodeAt() > 0x3130 && pKey.charCodeAt() < 0x318F) || (pKey.charCodeAt() >= 0xAC00 && pKey.charCodeAt() <= 0xD7A3) || !(pKey!="\r" && !eReg.test(pKey)))) { event.returnValue=false; delete eReg; } setUpperLowerCase(); if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } /** * 키 입력시 한글,영어,숫자만 입력받기 */ function setLetterKorEngNumOnly() { var pKey = String.fromCharCode(event.keyCode); var eReg = /[a-zA-Z]/g; // 스페이스 허용 if(event.keyCode != 32 && !((pKey.charCodeAt() > 0x3130 && pKey.charCodeAt() < 0x318F) || (pKey.charCodeAt() >= 0xAC00 && pKey.charCodeAt() <= 0xD7A3) || !(pKey!="\r" && !eReg.test(pKey)) || !setKeyInputNumberOnly())) { event.returnValue=false; delete eReg; } setUpperLowerCase(); if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } /** * 키 입력시 영어만 입력받기 */ function setLetterEnglishOnly() { var pKey = String.fromCharCode(event.keyCode); var eReg = /[a-zA-Z]/g; // 스페이스 허용 if(event.keyCode != 32 && pKey!="\r" && !eReg.test(pKey)) //엔터키 및 regkey가 아닐경우 리턴 event.returnValue=false; delete eReg; setUpperLowerCase(); if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } /** * 키 입력시 숫자,- 값만 입력받음. */ function setLetterInteger() { var pKey = String.fromCharCode(event.keyCode); var intReg = /[0-9\\-]/g; if(pKey!="\r" && !intReg.test(pKey)) //엔터키 및 regkey가 아닐경우 리턴 event.returnValue=false; delete intReg; if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } /** * 키 입력시 숫자 , . , - 값만 입력받음. */ function setLetterFloatOnly() { var pKey = String.fromCharCode(event.keyCode); var floatReg = /[0-9\\.\\-]/g; if(pKey!="\r" && !floatReg.test(pKey)) //엔터키 및 regkey가 아닐경우 리턴 event.returnValue=false; delete floatReg; if( event.srcElement.userchar != undefined) { var userKey = event.srcElement.userchar; for(i=0;i< userKey.length;i++) { if(pKey == userKey.charAt(i)) { event.returnValue=true; break; } } } } //-----------------------------------------------------------------------------------------------------------------// //----------------------------------- 페이지 initialize 관련 함수 끝 ------------------------------------------------// /** * 최소값 체크 로직 *
ex : validationMinimum("100000","10000") * @param minV : 지정된 최소 value * @param inV : 입력된 Value * @return boolean */ function validationMinimum(minV,inV) { if (minV == "") { i18nAlert("정해진 최소값이 없습니다."); return false; } if ( parseFloat(inV) < parseFloat(minV) ) { return false; } return true; } /** * 최대값 체크 로직 *
ex : validationMaximum("100000","10000") * @param maxV : 지정된 최대 value * @param inV : 입력된 Value * @return boolean */ function validationMaximum(maxV,inV) { if (maxV == "") { i18nAlert("It decides and there is not a position maximum price"); return false; } if ( parseFloat(maxV) < parseFloat(inV) ) { return false; } return true; } /** * 최대 btye 체크 로직 *
ex : validationMaxByte(form1.inputname.value , 10) * @param textObj : 체크할 String value * @param length_limit : 최대 byte * @return boolean */ function validationMaxByte(textObj, length_limit) { var length = calculate_msglen(textObj); var kor_cnt = Math.floor(length_limit/2); if (length > length_limit) { return false; } return true; } /** * 최소 btye 체크 로직 *
ex : validationMaxByte(form1.inputname.value , 10) * @param textObj : 체크할 String value * @param length_limit : 최소 byte * @return boolean */ function validationMinByte(textObj, length_limit) { var length = calculate_msglen(textObj); var kor_cnt = Math.floor(length_limit/2); if (length < length_limit) { return false; } return true; } /** * 한글 2글자 영문 1글자로 길이 측정하여 문자열의 byte 길이를 리턴한다. * @param 체크할 String value * @return 측정한 해당 값의 byte 길이 */ function calculate_msglen(message) { var nbytes = 0; for (i=0; i 4) { nbytes += 2; } else if (ch == '\n') { if (message.charAt(i-1) != '\r') { nbytes += 1; } } else if (ch == '<' || ch == '>') { nbytes += 4; } else { nbytes += 1; } } return nbytes; } /** * get,put 만 되는 hash table *
ex : *
var temphash = new javascriptHashtable() *
temphash.put("key1","토요일"); 값 넣기 *
temphash.put("key2","일요일"); *
temphash.get("key1"); 값 가져오기 * @constructor var temp = new javascriptHashtable(); */ function javascriptHashtable(){ this.hash = new Array(); } javascriptHashtable.prototype.get = function (key) { if(this.hash[key] == undefined) return "null"; else return this.hash[key]; } javascriptHashtable.prototype.put = function (key, value) { if (key == null || value == null) return i18nAlert("key and value do not permit null or blank"); if (this.hash[key] != null) return i18nAlert("already exist value"); this.hash[key] = value; } /** * 중첩된 css에서 해당 css만 제거 *
removeCss(["input1","input2"],"input1") * @param cssArr : 설정되어 있는 class 배열. (참고로 css는 class="input1 input2" 이런식으로 중복될수 있다. * @param reAtt : 제거할 css명 * @return 제거할 css가 제거된 스트링값 */ function removeCss(cssArr,reAtt) { var retCss=""; for( var i = 0 ; i < cssArr.length ; i++) { if(reAtt != cssArr[i] ) retCss += cssArr[i] + " "; } return retCss; } /** * sider FrameWork의 form submit 함수 */ function formSubmitValidation() { //이중 서브밑 방지 if(this.submitstat != "false") { i18nAlert("요청하신 내용이 처리중입니다.
확인을 누르시고 잠시 기다려 주십시오"); return; } else { this.submitstat = "validating"; //기본 밸리데이션 체크 함수 호출 if(initBaseValidationCheck(this)) { this.submitstat = "true"; //var tokenValue = ""; XecureSubmit(this); // this.submit(); } else { this.submitstat = "false"; return; } } } /** * validation check 로직을 뺀 form submit함수 * 본 함수에서는 중복 Submit 체크만 한후 form을 Submit한다. */ //var tokenValue = ""; function formSubmit() { //이중 서브밑 방지 if(this.submitstat != "false") { i18nAlert("요청하신 내용이 처리중입니다.
확인을 누르시고 잠시 기다려 주십시오"); try {if (document.form1 != undefined) {reset_submit(document.form1);}} catch(e){} return; } else { this.submitstat = "true"; // XSS 검증 if(xssCheck(this) == false){ reset_submit(this); return; } XecureSubmit(this); } } function xssCheck(f){ for (var i = 0 ; i < f.elements.length ; i++) { if (f.elements[i].tagName.toString().toLowerCase() == "input" ) { var tmp_val = f.elements[i].value.toUpperCase(); var err_msg = "입력값이 올바르지 않습니다."; if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf("SCRIPT>") > -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; }else if(tmp_val.indexOf(" -1){ alert(err_msg); return false; } } } } /** * submitStateFalse 함수 * submit 상태를 알려주는 submitstat 값을 false로 바꿔주는 함수. */ function submitStateFalse(frm) { frm.submitstat = "false"; } /** * validation check 함수 * @param checkForm : validation 검사를 할 폼. * @return boolean */ function initBaseValidationCheck(checkForm, fldClear) { try{uf_session_time_reset();}catch(e){} for (var i = 0 ; i < checkForm.elements.length ; i++) { //mask한 값에서 마스크 값 삭제 if ( ( checkForm.elements[i].getAttribute("maskform") != undefined && checkForm.elements[i].getAttribute("maskform") != "") || checkForm.elements[i].getAttribute("chartype") == "money") { if(checkForm.elements[i].getAttribute("maskform") == "usermask") { checkForm.elements[i].value = unMaskEngNum(checkForm.elements[i].value);//사용자 마스크 지우기 로직. } else { checkForm.elements[i].value = getOnlyNumberFormat(checkForm.elements[i].value); } } //input 타입 if (checkForm.elements[i].tagName.toString().toLowerCase() == "input" ) { //필수 값 체크 if ( checkForm.elements[i].getAttribute("nullable") == "false") { if(checkForm.elements[i].type.toString().toLowerCase() == "text" || checkForm.elements[i].type.toString().toLowerCase() == "password") { if( checkForm.elements[i].value == "" ) { //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129 if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "필수 입력 사항입니다.", checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 }else{ i18nAlert("필수 입력 사항입니다.", checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 } if ( !checkForm.elements[i].getAttribute("class") != "" ) { checkForm.elements[i].setAttribute("class", "frameworkNullable"); } else { checkForm.elements[i].setAttribute("class", checkForm.elements[i].getAttribute("class") + " " + "frameworkNullable"); } //heckForm.elements[i].select(); //checkForm.elements[i].select(); return false; } else //한번 validation에서 css설정이 되었을경우 빼야 하기 때문에. { //var classArr = checkForm.elements[i].getAttribute("className").split(" "); if( $(checkForm.elements[i]).attr("class") != undefined && $(checkForm.elements[i]).attr("class") != ""){ var classArr = checkForm.elements[i].getAttribute("class").split(" "); checkForm.elements[i].setAttribute("class", removeCss(classArr,"frameworkNullable")); } } } else if(checkForm.elements[i].type.toString().toLowerCase() == "checkbox" || checkForm.elements[i].type.toString().toLowerCase() == "radio") { var checkState = false; var elementArray = eval("checkForm."+checkForm.elements[i].name); for(var ct = 0 ; ct < elementArray.length ; ct++) { if(elementArray[ct].checked == true) { checkState = true; break; } } if (checkState == false) { //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129 if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "필수 입력 사항입니다.", checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 }else{ i18nAlert("필수 입력 사항입니다.", checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 } //checkForm.elements[i].focus(); return false; } } } if( checkForm.elements[i].value != "") { //최대값 체크 if ( checkForm.elements[i].getAttribute("maximum") != undefined && checkForm.elements[i].getAttribute("maximum") != "") { if ( !validationMaximum(checkForm.elements[i].getAttribute("maximum") , checkForm.elements[i].value) ) { var errMsg = "입력값을 % 사이로 입력해 주시기 바랍니다."; if(checkForm.elements[i].getAttribute("minimum") != undefined && checkForm.elements[i].getAttribute("minimum") != "") { //minimum까지 설정되어 있으면.. errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minimum")+"~"+checkForm.elements[i].getAttribute("maximum")); }else{ //maximum만 설정되어 있으면.. errMsg = errMsg.replace("%","~"+checkForm.elements[i].getAttribute("maximum")); } //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129 if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + errMsg , checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 //i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "정해진 최대값보다 큽니다." );//alert 메세지 함수 호출 }else{ i18nAlert(errMsg, null, null, null, null, fldClear); //i18nAlert("정해진 최대값보다 큽니다."); } //checkForm.elements[i].select(); return false; } } //최소값 체크 if ( checkForm.elements[i].getAttribute("minimum") != undefined && checkForm.elements[i].getAttribute("minimum") != "") { if ( !validationMinimum(checkForm.elements[i].getAttribute("minimum") , checkForm.elements[i].value) ) { var errMsg = "입력값을 % 사이로 입력해 주시기 바랍니다."; if(checkForm.elements[i].maximum != undefined && checkForm.elements[i].maximum != "") { //maximum까지 설정되어 있으면.. errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minimum")+"~"+checkForm.elements[i].maximum); }else{ //minimum만 설정되어 있으면.. errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minimum")+"~"); } //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129 if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + errMsg , checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 //i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "정해진 최소값보다 작습니다." );//alert 메세지 함수 호출 }else{ i18nAlert(errMsg, null, null, null, null, fldClear); //i18nAlert("정해진 최소값보다 작습니다."); } //checkForm.elements[i].select(); return false; } } //최대 바이트 체크 if ( checkForm.elements[i].getAttribute("maxbyte") != undefined && checkForm.elements[i].getAttribute("maxbyte") != "") { if ( !validationMaxByte(checkForm.elements[i].value , checkForm.elements[i].getAttribute("maxbyte")) ) { var errMsg = "입력을 % 자리로 해주십시오."+"(BYTE)"; if(checkForm.elements[i].getAttribute("minbyte") != undefined && checkForm.elements[i].getAttribute("minbyte") != "") { //minbyte까지 설정되어 있으면.. errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minbyte")+"~"+checkForm.elements[i].getAttribute("maxbyte")); }else{ //maxbyte만 설정되어 있으면.. errMsg = errMsg.replace("%","~"+checkForm.elements[i].getAttribute("maxbyte")); } var kor_cnt = Math.floor(checkForm.elements[i].getAttribute("maxbyte")/2); //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129 if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert( "[" + checkForm.elements[i].getAttribute("collname") + "] " + errMsg, checkForm, checkForm.elements[i], fldClear ); //alert 메세지 함수 호출 //i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "최대 바이트를 초과하였습니다." + "(~"+checkForm.elements[i].getAttribute("maxbyte") + " BYTE)");//alert 메세지 함수 호출 }else{ i18nAlert(errMsg, null, null, null, null, fldClear); //i18nAlert("최대 바이트를 초과하였습니다." + "(~"+checkForm.elements[i].getAttribute("maxbyte") + " BYTE)"); } //checkForm.elements[i].select(); return false; } } //최소 바이트 체크 if(checkForm.elements[i].getAttribute("minbyte") != undefined && checkForm.elements[i].getAttribute("minbyte") !="") { if(checkForm.elements[i].value.length == 0 || (!validationMinByte(checkForm.elements[i].value, checkForm.elements[i].getAttribute("minbyte"))) ) { var errMsg = "입력을 % 자리로 해주십시오."+"(BYTE)"; if(checkForm.elements[i].getAttribute("maxbyte") != undefined && checkForm.elements[i].getAttribute("maxbyte") != "") { //maxbyte까지 설정되어 있으면.. errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minbyte")+"~"+checkForm.elements[i].getAttribute("maxbyte")); }else{ //minbyte만 설정되어 있으면.. errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minbyte")+"~"); } var kor_cnt = Math.floor(checkForm.elements[i].getAttribute("minbyte")/2); if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + errMsg, checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 //i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "정해진 최소값보다 작습니다." + "(~"+checkForm.elements[i].getAttribute("minbyte") + " BYTE)");//alert 메세지 함수 호출 }else{ i18nAlert(errMsg, null, null, null, null, fldClear); //i18nAlert("정해진 최소값보다 작습니다." + "(~"+checkForm.elements[i].getAttribute("minbyte") + " BYTE)"); } //checkForm.elements[i].select(); return false; } } //한글이 들어간 Input값은 2byte전각 문자로 바꿔준다. 이재호 차장님 요청으로 20080721 김재범 추가. if( checkForm.elements[i].getAttribute("chartype") == "kor" || checkForm.elements[i].getAttribute("chartype") == "kornum" || checkForm.elements[i].getAttribute("chartype") == "koreng" || checkForm.elements[i].getAttribute("chartype") == "korengnum" ) { if(checkForm.elements[i].getAttribute("fullchar") != "false") checkForm.elements[i].value = convert2ByteCharToString(checkForm.elements[i].value); } //최소 길이 체크 if(checkForm.elements[i].getAttribute("minlength") != undefined && checkForm.elements[i].getAttribute("minlength") != "") { if( checkForm.elements[i].getAttribute("chartype") == "kor" || checkForm.elements[i].getAttribute("chartype") == "kornum" || checkForm.elements[i].getAttribute("chartype") == "koreng" || checkForm.elements[i].getAttribute("chartype") == "korengnum" ) { if(checkForm.elements[i].getAttribute("fullchar") != "false") checkForm.elements[i].value = convert2ByteCharToString(checkForm.elements[i].value); var _minlen = checkForm.elements[i].getAttribute("minlength")-2; if(checkForm.elements[i].getAttribute("fullchar") == "false") _minlen = checkForm.elements[i].getAttribute("minlength"); if ( checkForm.elements[i].value.length == 0 || (!validationMinByte(checkForm.elements[i].value , (_minlen))) ) { var errMsg = "입력을 % 자리로 해주십시오."+"(LENGTH)"; if(checkForm.elements[i].getAttribute("maxLength") != undefined && checkForm.elements[i].getAttribute("maxLength") != "" && checkForm.elements[i].getAttribute("maxLength") != "2147483647") { //maxLength까지 설정되어 있으면.. //alert(checkForm.elements[i].getAttribute("maxLength").value); errMsg = errMsg.replace("%",_minlen/2+"~"+(checkForm.elements[i].getAttribute("maxLength")-2)/2); }else{ //minlength만 설정되어 있으면.. errMsg = errMsg.replace("%",_minlen/2); } var kor_cnt = Math.floor((_minlen)/2); //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129 if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + errMsg, checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 //i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "정해진 최소값보다 작습니다." + "(~"+checkForm.elements[i].getAttribute("minlength") + " LENGTH)");//alert 메세지 함수 호출 }else{ i18nAlert(errMsg, null, null, null, null, fldClear); //i18nAlert("정해진 최소값보다 작습니다." + "(~"+checkForm.elements[i].getAttribute("minlength") + " LENGTH)"); } //checkForm.elements[i].select(); return false; } }else { //alert('2'); //checkForm, checkForm.element[i] //alert(checkForm); //alert(checkForm.elements[i]); if(checkForm.elements[i].value.length < checkForm.elements[i].getAttribute("minlength")) { var errMsg = "입력을 % 자리로 해주십시오."; if(checkForm.elements[i].getAttribute("maxLength") != undefined && checkForm.elements[i].getAttribute("maxLength") != "" && checkForm.elements[i].getAttribute("maxLength") != "2147483647") { //maxLength까지 설정되어 있으면.. if(checkForm.elements[i].getAttribute("minlength") != checkForm.elements[i].getAttribute("maxLength")){ errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minlength")+"~"+checkForm.elements[i].getAttribute("maxLength")); }else{ errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("maxLength")); } //errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minlength")+"~"+checkForm.elements[i].getAttribute("maxLength")); }else{ //minlength만 설정되어 있으면.. errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minlength")); } if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + errMsg, checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 //i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "정해진 최소값보다 작습니다." + "(~"+checkForm.elements[i].getAttribute("minlength") + " LENGTH)");//alert 메세지 함수 호출 }else{ i18nAlert(errMsg, null, null, null, null, fldClear); //i18nAlert("정해진 최소값보다 작습니다." + "(~"+checkForm.elements[i].getAttribute("minlength") + " LENGTH)"); } //checkForm.elements[i].focus(); return false; } } } //최대 길이 체크 if ( checkForm.elements[i].getAttribute("maxLength") != undefined && checkForm.elements[i].getAttribute("maxLength") != "") { //한글이 들어간 Input값은 -2 byte로 maxByte 체크를 한다. 20080721 김재범 추가. if( checkForm.elements[i].getAttribute("chartype") == "kor" || checkForm.elements[i].getAttribute("chartype") == "kornum" || checkForm.elements[i].getAttribute("chartype") == "koreng" || checkForm.elements[i].getAttribute("chartype") == "korengnum" ) { if(checkForm.elements[i].getAttribute("fullchar") != "false") checkForm.elements[i].value = convert2ByteCharToString(checkForm.elements[i].value); var _maxlen = checkForm.elements[i].getAttribute("maxLength")-2; if(checkForm.elements[i].getAttribute("fullchar") == "false") _maxlen = checkForm.elements[i].getAttribute("maxLength"); if ( !validationMaxByte(checkForm.elements[i].value , (_maxlen)) ) { var errMsg = "입력을 % 자리로 해주십시오."; if(checkForm.elements[i].getAttribute("minlength") != undefined && checkForm.elements[i].getAttribute("minlength") != "") { //minlength까지 설정되어 있으면.. if(checkForm.elements[i].getAttribute("minlength") != checkForm.elements[i].getAttribute("maxLength")){ errMsg = errMsg.replace("%",checkForm.elements[i].getAttribute("minlength")/2+"~"+_maxlen/2); }else{ errMsg = errMsg.replace("%",_maxlen/2); } }else{ //maxLength만 설정되어 있으면.. errMsg = errMsg.replace("%",(checkForm.elements[i].getAttribute("maxLength")-2)/2); } var kor_cnt = Math.floor((_maxlen)/2); //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129 if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + errMsg, checkForm , checkForm.elements[i], fldClear);//alert 메세지 함수 호출 //i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "최대 길이를 초과하였습니다." + "(~"+checkForm.elements[i].getAttribute("maxLength") + " LENGTH)");//alert 메세지 함수 호출 }else{ i18nAlert(errMsg, null, null, null, null, fldClear); //i18nAlert("최대 길이를 초과하였습니다." + "(~"+_maxlen + " LENGTH)"); } //checkForm.elements[i].select(); return false; } } } } //select 타입이 필수일때 } else if ( checkForm.elements[i].tagName.toString().toLowerCase() == "select" ) { if(checkForm.elements[i].disabled==true) checkForm.elements[i].disabled = false; if((checkForm.elements[i].getAttribute("nullable") == false || checkForm.elements[i].getAttribute("nullable") == "false") && checkForm.elements[i].value == "") { //colname 어트리뷰트 추가되면서 비교하는 if문 추가.20080129 if(checkForm.elements[i].getAttribute("collname") != undefined) { i18nAlert("[" + checkForm.elements[i].getAttribute("collname") + "] " + "필수 입력 사항입니다.", checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 }else{ i18nAlert("필수 입력 사항입니다.", checkForm, checkForm.elements[i], fldClear);//alert 메세지 함수 호출 } //checkForm.elements[i].focus(); return false; } } /* * 채널별 서비스가능여부 체크(ex:간투) * 2008.10.27 웹케시 이재호 */ if(checkForm.elements[i].getAttribute("chkOrgSts") != undefined){ if(checkForm.elements[i].getAttribute("chkOrgSts") == "OUTBANK"){ if(!chkErrBank(checkForm, checkForm.elements[i])) return false; } if(!chkStatusChl(checkForm.elements[i].getAttribute("chkOrgSts"), checkForm.elements[i].value)){ if(checkForm.elements[i].getAttribute("chkOrgSts").indexOf("TIIS")>-1) i18nAlert("현재 간접투자 시스템장애로 해당계좌의 거래가 불가합니다.", checkForm, checkForm.elements[i]); return false; } } }//for문 끝 try { // ars 추가인증 인증요청 체크 if ($('#smsVerifyForm').is(':visible') || $('#smsForm').is(':visible')) { if ($('#chk_Certdscd_2').length>0 || $('#chk_Certdscd_3').length>0 || $('#chk_Certdscd_5').length>0) { var arsChk = $(":radio[name='chk_Certdscd']:checked").val(); var arsPcChk = $(":radio[name='pc_chk_Certdscd']:checked").val(); if ((arsChk != undefined && arsChk == '2') || (arsPcChk != undefined && arsPcChk == '2')) { if ($('#_2CH_ARS_VERIFY_RESULT').length>0 && $('#_2CH_ARS_VERIFY_RESULT').val() != 'ok') { var _isPassed = false; try { if (document.form2._2CH_ARS_VERIFY_RESULT!=undefined && document.form2._2CH_ARS_VERIFY_RESULT.value == "ok") { _isPassed = true; } } catch (e) {} if (!_isPassed) { if ($('#_2CH_ARS_VERIFY_RESULT').val() == 'no') { i18nAlert('ARS 인증요청이 정상적으로 실행되지 않았습니다.
재요청 하시기 바랍니다.'); } else { i18nAlert('ARS 인증요청이 실행되지 않았습니다.
ARS 인증요청을 먼저 해주시기 바랍니다.'); } return false; } } } else { if ($('#smsVerifyForm').is(':visible') && ((arsChk != undefined && arsChk == '3') || (arsPcChk != undefined && arsPcChk == '3'))) { if ($('#_2CH_ARS_VERIFY_RESULT').length>0 && $('#_2CH_ARS_VERIFY_RESULT').val() != 'ok') { var _isPassed = false; try { if (document.form2._2CH_ARS_VERIFY_RESULT!=undefined && document.form2._2CH_ARS_VERIFY_RESULT.value == "ok") { _isPassed = true; } } catch (e) {} if (!_isPassed) { i18nAlert('고객님의 출국사실여부가 확인되지 않습니다.
출국정보조회 요청을 하시기 바랍니다.'); return false; } } } else if ($('#smsForm').is(':visible') && ((arsChk != undefined && arsChk == '5') || (arsPcChk != undefined && arsPcChk == '5'))) { if ($('#_2CH_ARS_VERIFY_RESULT').length>0 && $('#_2CH_ARS_VERIFY_RESULT').val() != 'ok') { var _isPassed = false; try { if (document.form2._2CH_ARS_VERIFY_RESULT!=undefined && document.form2._2CH_ARS_VERIFY_RESULT.value == "ok") { _isPassed = true; } } catch (e) {} if (!_isPassed) { i18nAlert('고객님의 출국사실여부가 확인되지 않습니다.
출국정보조회 요청을 하시기 바랍니다.'); return false; } } } } if ($('#div_add_cert').is(':visible') && arsChk == undefined && arsPcChk == undefined) { i18nAlert('보안강화를 위한 추가인증을 선택하시기 바랍니다.'); return false; } } } //디지털OTP 인증요청여부 if($("#W_CRTC_NO").val() !="" && $("#W_CD_GRP_DATA_CON").val() == ""){ i18nAlert('디지털OTP 인증번호 요청을 하시기 바랍니다.'); return false; } } catch (e) {} // ars 추가인증 인증요청 체크 if ($('#chk_Certdscd_2').length>0 && $('#chk_Certdscd_2').is(':visible')==false) { try {$("input:radio[name='chk_Certdscd'][value='2']").prop("checked", false);} catch (e) {} try {$("input:radio[name='pc_chk_Certdscd'][value='2']").prop("checked", false);} catch (e) {} } /* * 투채널 서비스가능여부 체크 * 2011-05-16 이경수 */ return true; } /** * 서브밋시 해당 거래채널의 서비스가능여부 체크 * 2008.10.28 웹케시 이재호 */ function chkStatusChl(chl_id, value){ /* * 간투 체크. * '96' 계좌인 경우 ... */ if(chl_id == "TIIS"){ if(value.length == 14){ chkValue = value.substring(9, 11); if(chkValue == "96" && "false" == "true"){ return false; } } } // 간투조회 거래 체크 if(chl_id == "TIIS_INQ"){ if(value.length == 14){ chkValue = value.substring(9, 11); if(chkValue == "96" && ("false" == "true" || "false" == "true") ){ return false; } } } // 간투이체 거래 체크 if(chl_id == "TIIS_TRN"){ if(value.length == 14){ chkValue = value.substring(9, 11); if(chkValue == "96" && ("false" == "true" || "false" == "true") ){ return false; } } } return true; } // 타행상태 체크 function chkErrBank(frm, elem){ if("true" == "false" && elem.value != "003"){ uf_alert("타행송금거래가 일시적인 거래량 증가로 인해 잠시 중단되고 있습니다.
잠시 후에 다시 이용하여 주십시오.
문의전화 1588-2588(515)"); return false; } return true; } /** * MaskUp된 데이타에서 마스크 Delemeter 제외하고 값 리턴 *
ex : unMaskUpData(form1.name) * @param element : 마스크한 요소 name 또는 해당 객체 자체. * @return 구분자를 제외한 데이타값 */ function unMaskUpData(element) { var unmaskData = ""; //mask한 값에서 마스크 값 삭제 if ( ( element.maskform != undefined && element.maskform != "") || element.chartype == "money") { unmaskData = getOnlyNumberFormat(element.value);//spcommon.js에 있는 숫자만 빼오기 로직 } else unmaskData = element.value; return unmaskData; } /** * 사용자가 지정한 마스크업 스타일중 영어,숫자 혼합인 데이타의 mask를 지울때 사용 영어,숫자 이외의 문자 제거 *
ex : unMaskEngNum(String) * @param element : 마스크가 있는 String * @return 구분자를 제외한 String */ function unMaskEngNum(data) { var accReg = new RegExp('([a-zA-Z0-9])'); var temp = ""; for(var i = 0 ; i < data.length ; i++) { if(accReg.test(data.substr(i,1))) { temp += data.substr(i,1); } } return temp; } /** * window.showModalDialog(arg1,arg2,arg3) 옵션 배열의 갯수를 정확히 넣어줘야 합니다. 값이 필요 없으면 '' 을 넣습니다. * ex : openPopModal(a.html,"test",[넓이,높이,center여부,x좌표,y좌표,scroll여부,resizable여부]) * openPopModal(a.html,"test",['200','200','yes','200','200','yes','yes']) * scroll은 default=yes임 , center가 yes로 되어있어도 x,y좌표가 있으면 좌표에 따른다. * @param url : 주소 * @param arg : 넘겨줄 파라미터 * @param option : 창관련 옵션(배열 형식) */ function openPopModal(url, arg, option) { var sFeatures = ""; if(option != undefined) { var popWidth = option[0]; var popHeight = option[1]; var popCenter = option[2] == "" ? "yes" : option[2]; var popXpos = option[3]; var popYpos = option[4]; var popScroll = option[5] == "" ? "yes" : option[5]; var popResize = option[6] == "" ? "no" : option[6]; sFeatures = "dialogWidth:"+popWidth+"px"; sFeatures += ";dialogHeight:"+popHeight+"px"; sFeatures += ";center:"+popCenter; sFeatures += ";dialogLeft:"+popXpos+"px"; sFeatures += ";dialogTop:"+popYpos+"px"; sFeatures += ";scroll:"+popScroll; sFeatures += ";resizable:"+popResize; } //Xecure 적용되면 풀어주어야 함 var qs ; var path = "/"; var cipher; var xecure_url; // get path info & query string & hash from url qs_begin_index = url.indexOf('?'); path = getPath(url) // get query string action url if ( qs_begin_index < 0 ) { qs = ""; } else { qs = url.substring(qs_begin_index + 1, url.length ); } if( gIsContinue == 0 ) { gIsContinue = 1; if( IsNetscape60() ) // Netscape 6.0 cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs), "GET"); else cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET"); gIsContinue = 0; } else { i18nAlert(busy_info); return false; } if( cipher == "" ) return XecureWebError(); xecure_url = path + "?q=" + escape_url(cipher); // adding character set information if(usePageCharset) xecure_url += "&charset=" + document.charset; url = xecure_url; if(arg == "") arg = this;//파라미터가 없을 경우 현재 부모창을 넘김. window.showModalDialog(url, arg, sFeatures); } /** * window.showModelessDialog(arg1,arg2,arg3) 옵션 배열의 갯수를 정확히 넣어줘야 합니다. 값이 필요 없으면 '' 을 넣습니다. * ex : openPopModeless(a.html,"test",[넓이,높이,center여부,x좌표,y좌표,scroll여부,resizable여부]) * openPopModeless(a.html,"test",['200','200','yes','200','200','yes','yes']) * scroll은 default=yes임 , center가 yes로 되어있어도 x,y좌표가 있으면 좌표에 따른다. * @param url : 주소 * @param arg : 파라미터 * @param option : 창관련 옵션(배열형식) * @return : 오픈시킨 window */ function openPopModeless(url, arg, option) { var sFeatures = ""; if(option != undefined) { var popWidth = option[0]; var popHeight = option[1]; var popCenter = option[2] == "" ? "yes" : option[2]; var popXpos = option[3]; var popYpos = option[4]; var popScroll = option[5] == "" ? "yes" : option[5]; var popResize = option[6] == "" ? "yes" : option[6]; var sFeatures = "dialogWidth:"+popWidth+"px"; sFeatures += ";dialogHeight:"+popHeight+"px"; sFeatures += ";center:"+popCenter; sFeatures += ";dialogLeft:"+popXpos+"px"; sFeatures += ";dialogTop:"+popYpos+"px"; sFeatures += ";scroll:"+popScroll; sFeatures += ";resizable:"+popResize; } //Xecure 적용되면 풀어주어야 함 var qs ; var path = "/"; var cipher; var xecure_url; // get path info & query string & hash from url qs_begin_index = url.indexOf('?'); path = getPath(url) // get query string action url if ( qs_begin_index < 0 ) { qs = ""; } else { qs = url.substring(qs_begin_index + 1, url.length ); } if( gIsContinue == 0 ) { gIsContinue = 1; if( IsNetscape60() ) // Netscape 6.0 cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs), "GET"); else cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET"); gIsContinue = 0; } else { i18nAlert(busy_info); return false; } if( cipher == "" ) return XecureWebError(); xecure_url = path + "?q=" + escape_url(cipher); // adding character set information if(usePageCharset) xecure_url += "&charset=" + document.charset; url = xecure_url; if(arg == "") arg = this;//파라미터가 없을 경우 현재 부모창을 넘김. var win = window.showModelessDialog(url, arg, sFeatures); return win; } /** * window.open(arg1,arg2,arg3) 옵션 배열의 갯수를 정확히 넣어줘야 합니다. 값이 필요 없으면 '' 을 넣습니다. * ex :
* openWinPop(a.html,"새창임","form 이름",[넓이,높이,x좌표,y좌표,scroll여부,resizable여부,주소창여부,menu var 여부,toolbar 여부,상태바 여부])
* openWinPop(act,"popupWin","form2") -> form 데이타를 submit 하면서 일반적인 창 크기
* openWinPop("test.web","popupWin","form2",["500","600"]) -> form 데이타를 submit 하면서 팝업 사이즈가 500,600 을 띄울 경우
* openWinPop(act,"popupWin"); form 데이타없이 일반적인 크기의 팝업을 띄울경우
* openWinPop("test.web?a=1","popupWin","",["500","600"]) -> form 데이타없이 팝업을 띄울 경우
* scroll은 default=yes임 , center가 yes로 되어있어도 x,y좌표가 있으면 좌표에 따른다.
* @param url : 주소 * @param popname : 윈도우 이름 * @param option : 창관련 옵션(배열 형식) */ function openWinPop(url, popname , formName , option) { var sFeatures =""; if(option != undefined){ var popWidth = option[0] == "" ? "600" : option[0]; var popHeight = option[1] == "" ? "450" : option[1]; var popLeft = option[2] == "" ? 0 : option[2]; var popTop = option[3] == "" ? 0 : option[3]; var popScroll = option[4] == "" ? "no" : option[4]; var popResize = option[5] == "" ? "yes" : option[5]; var popLocation = option[6] == "" ? "no" : option[6]; var popMenubar = option[7] == "" ? "no" : option[7]; var popToolbar = option[8] == "" ? "no" : option[8]; var popStatus = option[9] == "" ? "no" : option[9]; sFeatures = "width="+popWidth; sFeatures += ",height="+popHeight; sFeatures += ",left="+popLeft; sFeatures += ",top="+popTop; sFeatures += ",scrollbars="+popScroll; sFeatures += ",resizable="+popResize; sFeatures += ",location="+popLocation; sFeatures += ",menubar="+popMenubar; sFeatures += ",toolbar="+popToolbar; sFeatures += ",status="+popStatus; } if(formName != undefined && formName != "") { var newWin = window.open('', popname, sFeatures); var submitform = eval("document."+formName); submitform.action=url; submitform.target=popname; submitform.submit(); // XecureSubmit(submitform); } else { // var newWin = window.open(url, popname, sFeatures); var newWin = XecureNavigate(url, popname, sFeatures); newWin.focus(); return newWin; } } /** * onblur 이벤트에 사용되며 첫번째 인자와 해당 input 또는 select 객체값이 동일하면 * 한개이상의 인풋,select 창을 inable,disable 시키기 *
ex: *
폼이 있을경우(폼이름:aForm) ex : onblur=orderDisableDiv('aaa',['aForm.dis1','aForm.dis2',...]) *
폼이 없을경우 ex : onblur=orderDisableDiv('aaa',['dis1','dis2',...]) * @param divValue : disable 기준값 * @param divName : disable 시킬 개체의 name(배열 1개 이상) */ function orderDisableDiv(divValue,divName) { var eventValue = event.srcElement.value; if(eventValue == divValue) { for(var i = 0 ; i < divName.length ; i++) { var eventTag = eval(divName[i]); //input창일때 if ( eventTag.tagName.toString().toLowerCase() == "input" ) { eventTag.readOnly = true; eventTag.disabled = true; eventTag.style.backgroundColor = "#cccccc"; } //select box일때 if ( eventTag.tagName.toString().toLowerCase() == "select") eventTag.disabled = true; } } else { for(var i = 0 ; i < divName.length ; i++) { var eventTag = eval(divName[i]); //input창일때 if ( eventTag.tagName.toString().toLowerCase() == "input" ) { eventTag.readOnly = false; eventTag.disabled = false; eventTag.style.backgroundColor = ""; } //select box일때 if ( eventTag.tagName.toString().toLowerCase() == "select") eventTag.disabled = false; } } } /** * 달력 띄우기 *
ex : sp_calendar('aform.cal1') * @param : 리턴값이 들어갈 input의 name */ function openCalendar(name,orgObject) { /* var targetDate = eval(name); var tDateValue = getOnlyNumberFormat(targetDate.value); if(tDateValue.length == 0 ) { document.getElementById("minical_ifr").contentWindow.Calendar(targetDate, null, event); } else if(validateDate8(tDateValue)) { document.getElementById("minical_ifr").contentWindow.Calendar(targetDate, null, event); } else { targetDate.select(); } */ var _orgObject=orgObject; var targetDate = eval(name); var tDateValue = getOnlyNumberFormat(targetDate.value); if(tDateValue.length == 0 ) { Calendar(targetDate, null, event,_orgObject); } else if(validateDate8(tDateValue)) { Calendar(targetDate, null, event,_orgObject); } else { targetDate.select(); } $("#minical").focus(); } /** * 달력 띄우기 위치지정을 할 수 있다.(달력 이미지 버튼을 기준으로 x,y축으로부터 마이너스) *
ex : sp_calendar('aform.cal1', '100' , '100') * @param : 리턴값이 들어갈 input의 name, x, y */ function openCalendarPosition(name, x , y) { var targetDate = eval(name); var tDateValue = getOnlyNumberFormat(targetDate.value); if(tDateValue.length == 0 ) { document.getElementById("minical_ifr").contentWindow.CalendarPosition(targetDate, x, y, event); } else if(validateDate8(tDateValue)) { document.getElementById("minical_ifr").contentWindow.CalendarPosition(targetDate, x, y, event); } else { targetDate.select(); } } /** * 디비 쿼리 리스트 팝업. 이미 등록되어 있는 팝업Action의 URL과 팝업에서 선택된 값이 입력될 parent창의 name을 넘기면 * 팝업에서 선택된 값이 셋팅됨 값 두개를 셋팅하여 parent창에 inputname, inputname_display에 셋팅됨. *
ex : openPopupUnit("popup.web","form1.name","500","600"){ * @param targetUrl : 팝업으로 등록되어 있는 Action URL * @param inputName : parent창에서 값으로 사용될 input name * @param width : 팝업창 넓이 * @param height : 팝업창 높이 */ function openPopupUnit(targetUrl,inputName,width,height){ var url = targetUrl + "?inputName="+inputName; var popupWin = window.open(url,"popupWin","width="+width+",height="+height+",toolbar=no,resizable=yes"); } /** * 수정 , 삭제, 수정취소,삭제취소 버튼 클릭시의 버튼 enable 함수 *
ex : displayBtnOrder( "doUpdateCancel" ) * @param targetMethod : 수정,삭제 수정취소,삭제취소의 명령값. /js/common.js에 등록되어 있음. */ function displayBtnOrder( targetMethod ) { if ( targetMethod == updateMethod ) { registeTD.style.display="none"; updateConfirmTD.style.display="inline"; updateCancelTD.style.display="inline"; deleteConfirmTD.style.display="none"; deleteCancelTD.style.display="none"; } else if( targetMethod == deleteMethod ) { registeTD.style.display="none"; updateConfirmTD.style.display="none"; updateCancelTD.style.display="none"; deleteConfirmTD.style.display="inline"; deleteCancelTD.style.display="inline"; } else { registeTD.style.display="inline"; updateConfirmTD.style.display="none"; updateCancelTD.style.display="none"; deleteConfirmTD.style.display="none"; deleteCancelTD.style.display="none"; } } /** * 체크박스 체크 풀기 *
ex : unCheckedCheckBoxState( "name" ) * @param checkName : uncheck 할 체크 박스 이름 */ function unCheckedCheckBoxState( checkName ) { var checkingBox = eval( "form1."+checkName ); if(checkingBox.length == undefined) { checkingBox.checked = false; } else { for(var i = 0 ; i < checkingBox.length ; i++) { if(checkingBox[i].checked == true) { checkingBox[i].checked = false; } } } } /** * 한개 이상의 체크박스의 상태 점검하기 *
ex : searchCheckBoxState( "name" ) * @param 상태를 점검할 체크박스 이름 * @return array[0] 체크박스중 체크된 갯수,array[1] 체크된 것중 마지막으로 체크된 체크박스의 value */ function searchCheckBoxState( checkName ) { var checkCnt = 0; var checkedLine = 0; var checkingBox = eval( "form1."+checkName ); if(checkingBox.length == undefined) { if(checkingBox.checked == true) return [1,0]; else return [0,0]; } for(var i = 0 ; i < checkingBox.length ; i++) { if(checkingBox[i].checked == true) { checkCnt++; checkedLine = checkingBox[i].value; } } return [checkCnt,checkedLine]; } /** * 인풋 창의 상태 변경 readOnly,color 색상 변경 *
changeReadOnlyState(["name1","name2"]) * @param 상태를 변경할 인풋 창 이름 배열 */ function changeReadOnlyState(changeArray) { for(var i = 0 ; i < changeArray.length ; i++) { var eventTag = eval(changeArray[i]); //input창일때 if ( eventTag.tagName.toString().toLowerCase() == "input" ) { eventTag.readOnly = true; eventTag.style.color = "#777777"; } //select box일때 if ( eventTag.tagName.toString().toLowerCase() == "select") eventTag.disabled = true; } } /** * 인풋 창의 상태 변경 Editable,color 색상 변경 *
changeEditableState(["name1","name2"]) * @param 상태를 변경할 인풋 창 이름 배열 */ function changeEditableState(changeArray) { for(var i = 0 ; i < changeArray.length ; i++) { var eventTag = eval(changeArray[i]); //input창일때 if ( eventTag.tagName.toString().toLowerCase() == "input" ) { eventTag.readOnly = false; eventTag.style.color = ""; } //select box일때 if ( eventTag.tagName.toString().toLowerCase() == "select") eventTag.disabled = false; } } /** * 조회일이 오늘 날짜보다 큰지 체크 *
ex : validateSearchDate("20060812", "20060812" ) * @param startDate : 체크할 날짜(yyyymmdd) , * @param nowDate : 기준 날짜(yyyymmdd) * @return : boolean */ function validateSearchDate(startDate, nowDate ) { if(startDate.length > 8) { i18nAlert("조회일이 잘못되었습니다."); return false; } if( parseInt(startDate,10) > parseInt(nowDate,10) ) { return false; } return true; } /** * 조회기간 체크 * ex : validateSearchPeriodDate("20060613","20060714",3) * @param startDate : 조회 시작일(yyyymmdd) * @param nowDate : 기준 일(yyyymmdd) * @param period : 조회 기간(int) * @return : boolean */ function validateSearchPeriodDate(startDate, nowDate , period) { if(startDate.length > 8) { i18nAlert("조회일이 잘못되었습니다."); return false; } var startYY = parseInt(startDate.substring(0,4),10); var endYY = parseInt(nowDate.substring(0,4),10); var startMM = parseInt(startDate.substring(4,6),10); var endMM = parseInt(nowDate.substring(4,6),10); var startDD = parseInt(startDate.substring(6),10); var endDD = parseInt(nowDate.substring(6),10); var dd = endDD - startDD; var startToEnd = ( ( endYY - startYY ) * 12) + endMM - startMM; if( startToEnd > parseInt(period,10) ) { i18nAlert("조회기간은 현재월 기준으로 \"+period+\"개월 이전까지만 조회 가능합니다."); return false; } else if(startToEnd == parseInt(period,10)) { if(dd >= 0) { i18nAlert("조회기간은 현재월 기준으로 \"+period+\"개월 이전까지만 조회 가능합니다."); return false; } } return true; } function uf_photo_register(){ } //신입금계좌지정서비스안내 function uf_newAccountServiceNotify(){ if (cookie.get("newAccount") != "done"){ open_main_bottom_ifname('/uib/jsp/popup/newAccountServiceNotify.jsp','500', '300','newAccount','newAccount','50','270'); } } /** * 화면 프린트 * ex : printPage() * @return : void */ function printPage(){ window.print(); } /** * 반각문자를 전각문자로 변환 * */ function convert2ByteCharToString(x_string) { // 특수문자 전각처리 var x_2byteString = ""; //컨버트된 문자 for(i=0;i < x_string.length;i++) { var c = x_string.charCodeAt(i); //if(32 <= c && c <= 126) { //전각으로 변환될수 있는 문자의 범위 if((32 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 96) || (123 <= c && c <= 126)) { //전각으로 변환될수 있는 문자의 범위 if(c == 32) { //스페이스인경우 ascii 코드 32 //아래와 같이 변환시 깨짐. //x_2byteString = x_2byteString + unescape("%uFFFC"); x_2byteString = x_2byteString + unescape("%u"+gf_DecToHex(12288)); } else { x_2byteString = x_2byteString + unescape("%u"+gf_DecToHex(c+65248)); } }else{ x_2byteString = x_2byteString + x_string.charAt(i); } } return x_2byteString; } function convert2ByteChar(x_char) { var x_2byteChar = ""; //컨버트된 문자 var c = x_char.charCodeAt(0); if(32 <= c && c <= 126) { //전각으로 변환될수 있는 문자의 범위 if(c == 32) { //스페이스인경우 ascii 코드 32 //아래와 같이 변환시 깨짐. //x_2byteChar = unescape("%uFFFC"); x_2byteChar = unescape("%u"+gf_DecToHex(12288)); } else { x_2byteChar = unescape("%u"+gf_DecToHex(c+65248)); } } return x_2byteChar; } function gf_DecToHex(dec) { return dec.toString(16); } /* * 화면클릭시 팝업 DIV 감추는 함수 * 웹케시 이재호 2008.11.16 */ var _HiddenIfrmObj; //var _isIfrmView = "false"; var _isLayerOpen = "false"; //var _isLayerLoad; function hiddenIfrm(){ try{ // 문서 TITLE 지정 // 팝업창 타이틀에 url 및 '#'표시 안나오게.... document.title = " IBK 기업은행 "; if(_isLayerOpen == "false"){ //_isLayerLoad = "false"; return; } //if(_HiddenIfrmObj != undefined && _isIfrmView == "true" && layer_opened != null && (_HiddenIfrmObj.style.display != "none" || _HiddenIfrmObj.style.visibility == "visible")){ if(_HiddenIfrmObj != undefined && (_HiddenIfrmObj.style.display != "none" || _HiddenIfrmObj.style.visibility == "visible")){ if(_HiddenIfrmObj.style.display != 'none') _HiddenIfrmObj.style.display = 'none' if(_HiddenIfrmObj.style.visibility == 'visible') _HiddenIfrmObj.style.visibility = 'hidden' _HiddenIfrmObj = undefined; //_isIfrmView = "false"; //layer_opened = null; _isLayerOpen = "false"; } }catch(e){} } function enableScroll(){ window.execScript("document.onmousewheel = function(){return true;}"); window.execScript("document.onkeydown = function(){return true;}"); } /* * 링크클릭시, 마우스스크롤시 shift키 방지 * 링크 새창으로 열리거나, shift 누른 상태에서 스크롤시 뒤로가기, 앞으로가기 방지. */ function processShift() { try{ if(event.shiftKey){ event.returnValue = false; } } catch(e){} } try{ if(document.body.onclick == null || document.body.onclick == undefined) document.body.onclick = processShift; if(document.body.onmousewheel == null || document.body.onmousewheel == undefined) document.body.onmousewheel = processShift; }catch(e){} // 마우스 기능 제한(오른쪽 버튼 무시 var IS_INT_MOUSE = false; // 특수키 기능 제한(Ctrl + R, Ctrl + N, F5, Ctrl + V) var IS_INT_KEY = false; if("R" != "T"){ IS_INT_MOUSE = true; IS_INT_KEY = true; } if(IS_INT_MOUSE) { document.oncontextmenu = function(){return false} document.body.onselectstart = function(){return false} } if (IS_INT_KEY){ if(document.body) document.body.onkeydown = processKey; } function processKey() { if((event.ctrlKey == true && (event.keyCode == 78 || event.keyCode == 82/* --Ctrl + V 허용-- || event.keyCode == 86*/)) || (event.keyCode >= 112 && event.keyCode <= 123)) { if(event.keyCode == 116){ uf_alert('새로고침 할 수 없는 페이지입니다.'); } event.keyCode = 0; event.cancelBubble = true; event.returnValue = false; return false; } } // 레이어 이동관련 함수 if(document.all.head != null && document.all.head != undefined) { document.all.head.onmousedown = ifrDragStart; } // 세션타임체크변수 초기화 try{ if(document.all.hahaha == undefined && document.all.timer1 == undefined){ if(parent){ parent.uf_reset_timeout(); } if(opener){ opener.uf_reset_timeout(); } } }catch(e){} //브라우저 타이틀 정보 var url = window.location.href+''; //웹로거(페이지뷰 카운트) 소스 var weblog_port = ''; if(url.indexOf('kiup') > -1) weblog_port = '1004'; //기업 else weblog_port = '1003'; //개인 // var arrForms = new Array (document.form1, document.form2, parent.document.form1, parent.document.form2); for(var i = 0 ; i < arrForms.length ; i++) { if (arrForms[i] != undefined) { try {clearFieldWithFrm(arrForms[i], 'HTML_TOKEN_EXCEPT_URL'); } catch (e) {} try {clearFieldWithFrm(arrForms[i], 'XGridHiddenFrame'); } catch (e) {} try {clearFieldWithFrm(arrForms[i], 'n_attention_4_xgrid');} catch (e) {} try {clearFieldWithFrm(arrForms[i], 'hiddenFrame_submit');} catch (e) {} } } // 해킹차단기 실행 //document.write(''); function openFraudPopup() { } $(document).ready(function(){ try { $("input[readonly=true]").on("keydown", function(event) { // console.log("### keydown [true]"); if (event.keyCode == 8) { event.preventDefault(); } }); $("input[readonly=readonly]").on("keydown", function(event) { // console.log("### keydown [readonly]"); if (event.keyCode == 8) { event.preventDefault(); } }); } catch(e) {} if(navigator.userAgent.indexOf('Firefox') >=0){ (function(){ var events=["mousedown","mouseover","mouseout","mousemove","mousedrag","click","dbclick","keypress","keyup"]; for(var i=0;i