//------------------------------------------------------------------------------------------------ // 일반적으로 어느 홈페이지개발에서나 사용 가능한 JAVASCRIPT 함수 //------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------ // 자주 사용되는 함수. -- comment by 김기영 //------------------------------------------------------------------------------------ function setCookie(name,value,domain) { // cookie 를 설정 // name - cookie 명 // value - cookie 에 들어갈 값 // return - 없음 var argc = setCookie.arguments.length; var argv = setCookie.arguments ; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape(value) + ((expires==null) ? "" : ("; expires=" + expires.toGMTString())) + ((path==null) ? "; path=/" : ("; path=" + path)) + ((domain==null) ? "; domain" : ("; domain=" + domain)) + ((secure==true) ? "; secure" : ""); } function getCookie(name){ // cookie 값을 확인 // name - 알고자하는 쿠키의 이름 // return - cookie 존재시 cookie 의 값, 미존재시 '' name=name+'='; var tmp = document.cookie; var sidx = tmp.indexOf(name); if(sidx == -1) return ''; sidx = sidx + name.length; var eidx = tmp.indexOf(';', sidx); if(eidx == -1)eidx = tmp.length; return unescape(tmp.substring(sidx, eidx)); } function selectAll(obj) { // object (text,textarea) 에 포커스를 지정하고 모든 영역을 선택함 // obj - object (JAVA object) // return - 없음 if (obj.type!='hidden'&&obj.style.display!='none') { obj.focus(); if (!obj.readOnly) obj.select(); } } function toNextObj(obj1,len,obj2) { // obj1 (text) 의 입력이 len 일경우 obj2 로 포커스를 이동 // obj1 - 테스트될 object // len - 다음 object 로 넘어갈 길이 // obj2 - 다음 object // return - none // 비고 - onkeyup event function 에서 사용할 수 있음 if (obj1!=null&&obj2!=null) { if (obj1.value.length>=len) selectAll(obj2); } } function checkFunc(func,value) { var aTemp; if (func=='') return ''; var aTemp=(func+'////////').split("/"); switch (aTemp[0]) { case 'noneorlen' : if (value.length==0||value.length==parseInt(aTemp[1])) return ''; return aTemp[2]; case 'checklen' : if (value.length==parseInt(aTemp[1])) return ''; return aTemp[2]; default : return '알 수 없는 함수적용'; } } function checkVar(obj,strNE,iFloat,strNN,iMin,iMax,strOF) { // 입력값의 유효성여부를 확인함 // obj - 확인할 object // strNE - 입력값이 공백일경우(스페이스만 입력한 경우 포함) 표시할 오류 내용. 이값이 '' 일경우 오류를 내지 않음 // ------------- 이하는 strNN 까지 지정시 유효 // 숫자 확인 부분으로 숫자뒤 문자가 입력되어도 숫자로 변경시킨다. ('223f'->'223') // 음수는 입력할 수 없음 // iFloat - 소숫점이하 자리 - 이 이하로 입력된 값은 라운드됨. 9 일경우 형식을 변화시키지 않음(전화번호등의 입력시) // strNN - 숫자로 변경이 되지 않을 때의 표시할 오류 내용 // ------------- 이하는 strOF 까지 지정시 유효 // 변경된 수치의 유효범위를 확인 // iMin - 수치의 최소값 // iMax - 수치의 최대값 // strOF - 범위를 벗어났을때 표시할 오류 내용 // return - 정상시 true, 오류시 해당 object 로 focus 이동후 false 를 return var value,pow; var aTemp,func,szAlert; if (typeof(obj)=='undefined') return true; value=obj.value.replace(/^[ ]+/g,'').replace(/[ ]+$/g,''); if (value==''&&strNE=='') return true; aTemp=(strNE+'##').split('##'); strNE=aTemp[0]; func=aTemp[1]; if (value=='') { if (strNE!='') { alert(strNE); selectAll(obj); return false; } selectAll(obj); return true; } if ((szAlert=checkFunc(func,value))!='') { alert(szAlert); selectAll(obj); return false; } if (typeof(strNN)!='undefined') { if (iFloat==0) value=parseInt(obj.value,10); else { value=parseFloat(obj.value); if (!isNaN(value)) { pow=Math.pow(10,iFloat); value=Math.round(value*pow)/pow; } } if (isNaN(value)) { if (strNN!='') alert(strNN); selectAll(obj); return false; } if (iFloat!=9) obj.value=value; if ((szAlert=checkFunc(func,''+value))!='') { alert(szAlert); selectAll(obj); return false; } if (obj.value<0) { alert('음수는 입력하실 수 없습니다.'); selectAll(obj); return false; } if (typeof(iMin)!='undefined') { if (parseInt(obj.value)parseInt(iMax)) { if (strOF!='') alert(strOF); selectAll(obj); return false; } } // } else { // if (obj.value.indexOf("'")!=-1) { // alert("'는 입력하실 수 없습니다."); // selectAll(obj); // return false; // } } return true; } function getCheckValues(formname,itemname,idx,needall,getfrom,exceptdisabled) { // 내용 : 체크박스에 할당된 값을 얻는다. // 같은 이름을 가진 체크박스가 여럿일때 유용하다. // 입력 : // formname - form name // itemname - checkbox name (같은 역할을 하는 것은 같은 이름으로 만든다.) // idx - value 중의 위치 (value 는 '|' 로 묶여 있다. 이로 구분된 인덱스를 말한다.) default:0 // needall - check 여부에 관계없이 넣을 것인가. // false 일 경우 check 된 항목의 값들을 "|" 로 묶어 반환한다. // true 일 경우 check 되지 않은 항목의 값도 얻는다. (모든 값을 얻고자 할때 사용) // getfrom - 값을 얻을 아이템의 이름, // check 된 항목의 값을 checkbox 자체가 아닌 다른 항목의 값에서 얻을 수 있도록 한다. // null 이거나 일 경우 itemname 을 사용한다. // exceptdisabled - true 일 경우. disabled 된 항목을 확인 항목에서 제외시킨다. // 반환 : "|" 로 구분된 지정된(선택된) 항목의 값 // // szCodes - 리턴 값 // bNeedAll - <- needall // iIdx - <- idx // szValue - checkbox 의 값. "|" 로 구분된 항목중 idx 번째의 값 // szGetFrom - <- getfrom // bExceptDisabled - <- exceptdisabled var szCodes,bNeedAll,iIdx,szValue,szGetFrom,bExceptDisabled; // 변수 초기화 및 입력된 사항을 점검 szCodes=''; iIdx=0; if (typeof(idx)!='undefined') iIdx=idx; bNeedAll=false; if (typeof(needall)!='undefined') bNeedAll=needall; szGetFrom=itemname if (typeof(getfrom)!='undefined') { if (getfrom!=null&&getfrom!='') szGetFrom=getfrom; } bExceptDisabled=false; if (typeof(exceptdisabled)!='undefined') bExceptDisabled=exceptdisabled; if (document.all[formname].elements[itemname]==null) ; else // '' 항목이 있을 경우 처리한다. if (document.all[formname].elements[itemname].length==null) { // '' checkbox 가 하나일 경우의 처리 szValue=(document.all[formname].elements[szGetFrom].value+'||||').split('|')[iIdx+0]; // '' 값이 없으면 리턴할 것이 없으므로 무시한다. if (szValue!='') { // '' bExceptDisabled 가 true 일 경우 disabled 된 항목은 무시한다. if (!bExceptDisabled||!document.all[formname].elements[itemname].disabled) { // '' bNeedAll 이 true 이면 항상 그렇지 않으면 checked 일 경우 값을 얻는다. if (bNeedAll) { szCodes=szValue; } else { if (document.all[formname].elements[itemname].checked) { szCodes=szValue; } } } } } else { // '' checkbox 가 여럿 일 경우 각 cjeckbox 에 대해 확인을 하고 // '' 얻은 값을 "|" 로 묶는다. for (i=0;i=0) iAge=iAge+1; return iAge; } function checkRegisterNum(regno1,regno2) { // 주민번호 유효성확인 // regno1 - 주민번호 앞자리 // regno2 - 주민번호 뒷자리 // return - true or false var i = 0; var curYear; var curMonth; var birthYear = 0;//출생연도 저장 var birthMonth = 0;//출생월 저장 var Sum = 0; var Mod = 0; var YearIn = 0; var MonthIn = 0; var DateIn = 0; if (regno1.length!=6 || regno2.length!=7) return false; var regno = regno1 + "-" + regno2; for( i=0 ; i < 14 ; i++ ) {//주민번호 14자리를 한자리씩 체크 if(i != 6) {//대쉬(-)를 제외한 모든 입력값이 0 ~ 9 사이의 값인지 체크 if( (regno.charAt(i) <= "0") && (regno.charAt(i) >= "9") ) return false; } } birthYear = regno1.slice(0,2); birthMonDay = regno1.slice(2,6); if( regno.charAt(7) == '3' || regno.charAt(7) == '4') birthYear = "20" + birthYear; else { birthYear = "19" + birthYear; for( i = 0 ; i < 13 ; i++ ) { if( i == 0) YearIn+=parseInt(regno.charAt(i))*10; if( i == 1) YearIn+=parseInt(regno.charAt(i)); if( i == 2) MonthIn+=parseInt(regno.charAt(i))*10; if( i == 3) MonthIn+=parseInt(regno.charAt(i)); if( i == 4) DateIn+=parseInt(regno.charAt(i))*10; if( i == 5) DateIn+=parseInt(regno.charAt(i)); if( i < 6) Sum+=parseInt(regno.charAt(i))*(i+2); if( i > 6 && i < 9 )Sum+=parseInt(regno.charAt(i))*(i+1); if( i > 8) Sum+=parseInt(regno.charAt(i))*(i-7); } //end for Mod=11-(Sum%11); if((11-(Sum%11))>=10) Mod-=10; if( Mod!=parseInt(regno.charAt(13)) ) {return false;} if( MonthIn < 1 || MonthIn > 12 || DateIn < 1 || DateIn > 31 ) {return false;} if( (MonthIn ==4 || MonthIn == 6 || MonthIn == 9 || MonthIn == 11 ) && DateIn > 30 ) {return false;} if( MonthIn ==2 && DateIn > 29 ) {return false;} } return true; } // 이메일 주소검사 - 함수 변경 (김기영) function checkEMail(obj,strNN) { // email 의 유효성확인 (정규식) // obj - 확인할 object // strNN - 오류시 표시할 문자열 / 값이 없으면 Default 메세지 출력 // return - true or false var email = obj.value; if(email){ var pattern = /^(.+)@(.+)$/; var atom = "\[^\\s\\(\\)<>#@,;:!\\\\\\\"\\.\\[\\]\]+"; var word="(" + atom + "|(\"[^\"]*\"))"; var user_pattern = new RegExp("^" + word + "(\\." + word + ")*$"); var ip_pattern = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/; var domain_pattern = new RegExp("^" + atom + "(\\." + atom +")*$"); var arr = email.match(pattern); // @, . 문자 검사 if (!arr){ //return "Email address seems incorrect (check @ and .'s)"; if(strNN) alert(strNN); else alert("이메일 주소가 올바르지 않습니다. \n\n['@', '.' 문자를 확인 하여 주십시오.]"); obj.focus(); selectAll(obj); return false; } // 계정 형태 검사 if (!arr[1].match(user_pattern)){ //return "The username doesn't seem to be valid."; if(strNN) alert(strNN); else alert("이메일 주소가 올바르지 않습니다. \n\n[사용자 계정을 확인 하여 주십시오.]"); obj.focus(); selectAll(obj); return false; } // IP 형태 검사 var ip = arr[2].match(ip_pattern); if (ip) { for (var i=1; i<5; i++){ if (ip[i] > 255){ //return "Destination IP address is invalid!"; if(strNN) alert(strNN); else alert("이메일 주소가 올바르지 않습니다. \n\n[아이피 주소를 확인하여 주십시오.]"); obj.focus(); selectAll(obj); return false; } } }else{ // 도메인 형태 검사 if (!arr[2].match(domain_pattern)){ //return "The domain name doesn't seem to be valid."; if(strNN) alert(strNN); else alert("이메일 주소가 올바르지 않습니다. \n\n[도메인을 확인하여 주십시오.]"); obj.focus(); selectAll(obj); return false; } var domain = arr[2].match(new RegExp(atom,"g")); if (domain.length<2){ // return "This address is missing a hostname!"; if(strNN) alert(strNN); else alert("이메일 주소가 올바르지 않습니다. \n\n[도메인이 누락되었습니다.]"); obj.focus(); selectAll(obj); return false; } if (domain[domain.length-1].length<2 || domain[domain.length-1].length>3){ // return "The address must end in a three-letter domain, or two letter country."; if(strNN) alert(strNN); else alert("이메일 주소가 올바르지 않습니다. \n\n[도메인형식이 맞지 안습니다.]"); obj.focus(); selectAll(obj); return false; } } } return true; } function getRadioValue(objForm,objRadio,dV) { // 라디오버튼의 결과값을 확인 // objForm - 라디오버튼이 속한 폼의 이름 // objRadio - 라디오버튼의 이름 // dV - 선택항목이 없을 경우의 리턴값 // return - 선택항목지정시 선택된 값, 미지정시 dV var defaultValue; if (getRadioValue.arguments.length>=3) defaultValue=dV; else defaultValue=-1 var iSellCode,bNoItem; iSellCode=defaultValue; if (objForm=='') objForm="_no form_" if (objRadio=='') objRadio="_no radio_" if (document.forms(objForm)==null) return iSellCode; if (document.forms(objForm).elements(objRadio)==null) return iSellCode; var i; bNoItem=true; for (i=0;i<1000;i++) { if (document.forms(objForm).elements(objRadio)[i]==null) break; bNoItem=false; if (document.forms(objForm).elements(objRadio)[i].checked) { iSellCode=document.forms(objForm).elements(objRadio)[i].value; break; } } if (bNoItem) { if (document.forms(objForm).elements(objRadio)!=null) { if (document.forms(objForm).elements(objRadio).checked) { iSellCode=document.forms(objForm).elements(objRadio).value; } } } return iSellCode; } function getSelectValue(objForm,objRadio,dV) { // 내용 : select 에 선택 값을 돌려준다. // (select object 의 value 를 가져 오는 것과 달리 // multi select 일 경우 선택된 모든 항목의 값을 "," 로 묶어 돌려 준다) // 입력 : // objForm - select object 가 있는 form 의 아이디 // objRadio - select object 의 아이디 (이름이 안 맞지만 이해하기를.) // dV - 선택된 값이 없을 경우 default 값. default:-1 // 반환 : "," 로 엮인 선택된 항목의 value 들 // 주의 : 선택은 됬지만 값이 없을 경우는 처리 대상에서 제외된다. // defaultValue - 선택된 항목이 없을 경우 설정할 값 var defaultValue; if (getSelectValue.arguments.length>=3) defaultValue=dV; else defaultValue=-1 // iSellCode - return 할 값 var iSellCode; // 입력된 값을 정돈한다. iSellCode=defaultValue; if (objForm=='') objForm="_no form_" if (objRadio=='') objRadio="_no radio_" if (document.forms(objForm)==null) return iSellCode; if (document.forms(objForm).elements(objRadio)==null) return iSellCode; // i - iterator // len - option 의 수 // val - return 할 값 var i,len,val; // option 의 갯수를 얻고 return 할 값을 초기화 한다. len=document.forms(objForm).elements(objRadio).options.length; val=''; // 각 option 에 대해 for (i=0;i= 0){ ReturnVal=ReturnVal+obj.value.substring(i, i+1); } } obj.value = ReturnVal; } //-- 숫자만 입력가능하게 하는 함수 function fnChkNum(obj){ var validstr = "0123456789"; var ReturnVal = ""; var mode = true; for (i = 0; i < obj.value.length; i++){ if(validstr.indexOf(obj.value.substring(i, i+1)) >= 0){ ReturnVal=ReturnVal+obj.value.substring(i, i+1); }else{ mode = false; } } if(!mode){ alert("숫자만 입력 가능 합니다.") } obj.value = ReturnVal; } //--------------------------------------------------------------------------------- // 필터링 함수 -- program by 김기영 //--------------------------------------------------------------------------------- // 콘텐츠 값에서 필터값이 포함되어 있는지를 확인하여 필터대상값이 포함 된경우 해당 필터값을 반환하는 함수 // filter : 필터값 ( ',' 로 단어를 구분) // content : 필터링 대상 문자열 // return value : 필터링에 걸린경우 필터링 단어, 필터링에 안걸린경우 "" function doFiltering(filter,content){ var trim_pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자 // 양쪽 공백 없애기 trim() var s = filter.split(","); if(content){ for (i=0; i 20)){ if(strNN) alert(strNN); else alert("아이디는 4~20자만 가능 합니다."); selectAll(obj); return false; } // 문자열 검사 var validstr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var targetstr = obj.value.toUpperCase(); for (i = 0; i < targetstr.length; i++){ if(validstr.indexOf(targetstr.substring(i, i+1)) < 0){ if(strNN) alert(strNN); else alert("아이디는 숫자 또는 영문자만 가능 합니다."); selectAll(obj); return false; } } return true; } } // 비밀번호 유효성검사 - 프로그램 (김기영) function checkPW(obj,strNN) { // 비밀번호 유효성확인 (자리수, 문자열) // obj - 확인할 object // strNN - 오류시 표시할 문자열 / 값이 없으면 Default 메세지 출력 // return - true or false if(obj.value){ // 자리수 검사 if((obj.value.length < 4) || (obj.value.length > 20)){ if(strNN) alert(strNN); else alert("비밀번호는 4~20자만 가능 합니다."); selectAll(obj); return false; } // 문자열 검사 var validstr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var targetstr = obj.value.toUpperCase(); for (i = 0; i < targetstr.length; i++){ if(validstr.indexOf(targetstr.substring(i, i+1)) < 0){ if(strNN) alert(strNN); else alert("비밀번호는 숫자 또는 영문자만 가능 합니다."); selectAll(obj); return false; } } return true; } } // 코드 유효성검사 - 프로그램 (김기영) function checkCode(obj,strNN) { // 코드의 유효성확인 (자리수, 문자열) // obj - 확인할 object // strNN - 오류시 표시할 문자열 / 값이 없으면 Default 메세지 출력 // return - true or false // 자리수 검사 if((obj.value.length < 2) || (obj.value.length > 20)){ if(strNN) alert(strNN); else alert("2~20자의 코드를 입력해 주십시오."); selectAll(obj); return false; } // 문자열 검사 var validstr = "0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var targetstr = obj.value.toUpperCase(); for (i = 0; i < targetstr.length; i++){ if(validstr.indexOf(targetstr.substring(i, i+1)) < 0){ if(strNN) alert(strNN); else alert("숫자 또는 영문자만 가능 합니다."); selectAll(obj); return false; } } return true; } //------------------------------------------------------------------------------------------------ // 공통함수 Include //------------------------------------------------------------------------------------------------ //file 관련 document.write('');