/**
* 프로그램 명 : 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("');
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