2011. 5. 12. 15:31

이클립스에서 SVN checkout을 하면 소스코드의 한글이 깨지는

현상이 생길때가 있다.

이 경우는 이클립스 언어 인코딩 설정이 잘 못 되었기 때문이며

해결하기 위해서는 utf-8로 변경해주면 된다.

아래와 같이 두가지 방법이 있다.

1. 이클립스 메뉴바에서 Window -> Preferences -> General -> Workspace의 Text file encoding에서

Other를 선택하여 UTF-8로 설정.


2. 이클립스 설치 폴더에서 eclipse.ini 파일을 열어
     "  -Dfile.encoding = utf-8   "
   을 추가.



Posted by TIMEC
2011. 5. 7. 19:47

□ apt-repository에 목록 추가.


sudo add-apt-repository "deb http://archive.canonical/ubuntu maverick partner"

소스까지 업데이트시

sudo add-apt-repository "deb-src http://archive.canonical/ubuntu maverick partner"


sudo apt-get update



□ 설치

sudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk

Posted by TIMEC
2010. 11. 14. 13:40

// LTRIM
String.prototype.ltrim = function()
{
 var re = /\s*((\S+\s*)*)/;
    return this.replace(re, "$1");
};


// RTRIM
String.prototype.rtrim = function()
{
 var re = /((\s*\S+)*)\s*/;
 return this.replace(re, "$1");
};


// TRIM
String.prototype.trim = function()
{
 return this.ltrim().rtrim();
};


//replaceALL
String.prototype.replaceAll = function(str1, str2)
{
 var temp = this;

 while(1){
  if( temp.indexOf(str1) != -1 )
   temp = temp.replace(str1, str2);
  else
  break;
 }
 return temp;
};


//플래시 파일 로드 함수
function loadFlash(objSrc, width, height, wmode) {
 var obj = '';
 obj += '<object type="application/x-shockwave-flash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="'+width+'" height="'+height+'">';
 obj += '<param name="movie" value="'+objSrc+'">';
 obj += '<param name="quality" value="high">';
 obj += '<param name="bgcolor" value="#000000">';
 obj += '<param name="wmode" value="'+wmode+'">';
 obj += '<param name="menu" value="false">';
 obj += '<param name="Command" value="Close">';
 obj += '<param name="swliveconnect" value="true">';
 obj += '<embed src="'+objSrc+'" quality=high bgcolor="#000000" width="'+width+'" height="'+height+'" swliveconnect="true" id="param" name="param" type="application/x-shockwave-flash" pluginspage="
http://www.macromedia.com/go/getflashplayer"><\/embed>';
 obj += '<\/object>';
 document.write(obj);
}


// 새창띄우기
function fncOpenPanel(strUrl, inrWidth, intHeight) {
 var newp = "width=" + inrWidth + ", height=" + intHeight + ", directories=no, scrollbars=no, resizable=yes";
 window.open(strUrl, "new", newp);
}


// 새창띄우기 스크롤
function fncOpenPanel_SC(strUrl, inrWidth, intHeight) {
 var newp = "width=" + inrWidth + ", height=" + intHeight + ", directories=no, scrollbars=yes, resizable=no";
 window.open(strUrl, "new", newp);
}


// 숫자만 입력
function onlyNumber() {

  if((event.keyCode<48)||(event.keyCode>57))
 {
  alert('숫자만 입력 가능합니다');
  event.returnValue=false;
 }
}


// 자릿수확인(최소글자수)
function fncMinCheck(strFrmName, strFieldName, strFieldNickName, intMin) {

 var strCheckObj = eval("document."+strFrmName+"."+strFieldName);

 if (strCheckObj.value.length<intMin) {
  alert(strFieldNickName+" 항목을 확인하세요.\n"+strFieldNickName+" 항목은 "+intMin+"글자 이상이어야 합니다.");
  strCheckObj.focus();
  return false;
 }
 else { return true; }

}


// 자릿수확인(최대글자수)
function fncMinMaxCheck(strFrmName, strFieldName, strFieldNickName, intMin, intMax) {

 var strCheckObj = eval("document."+strFrmName+"."+strFieldName);
 if (strCheckObj.value.length<intMin || strCheckObj.value.length>intMax) {
  alert(strFieldNickName+" 항목을 확인하세요.\n"+strFieldNickName+" 항목을 "+intMin+"글자 이상 "+intMax+"글자 이하이어야 합니다.");
  strCheckObj.focus();
  return false;
 }
 else { return true; }

}


// 공란체크
function fncNullCheck(strFrmName, strFieldName, strFieldNickName) {

 var strCheckObj = eval("document."+strFrmName+"."+strFieldName);
 if (strCheckObj.value.indexOf(" ")>0) {
  alert(strFieldNickName+" 항목을 확인하세요.\n"+strFieldNickName+" 항목에 공란은 허용되지 않습니다.");
  strCheckObj.focus();
  return false;
 }
 else { return true; }
}


// 숫자만 등록되도록 체크
function fncValidString09Check (strFrmName, strFieldName, strFieldNickName) {

    var ValidString="0123456789";
 var strCheckObj = eval("document."+strFrmName+"."+strFieldName);
 for (i=0; i<strCheckObj.value.length; i++) {
  if(ValidString.indexOf(strCheckObj.value.substring(i,i+1))<0) {
   alert(strFieldNickName+" 항목에 허용할 수 없는 문자가 입력되었습니다.\n"+strFieldNickName+" 항목은 숫자로만 등록하실 수 있습니다.");
   strCheckObj.focus();
    return false;
  }
    }
    return true;
}


// 숫자와 알파벳만 등록되도록 체크
function fncValidString09AZCheck (strFrmName, strFieldName, strFieldNickName) {

    var ValidString="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
 var strCheckObj = eval("document."+strFrmName+"."+strFieldName);
 
        for (i=0; i<strCheckObj.value.length; i++) {
                if(ValidString.indexOf(strCheckObj.value.substring(i,i+1))<0) {
                        alert(strFieldNickName+" 항목에 허용할 수 없는 문자가 입력되었습니다.\n"+strFieldNickName+" 항목은 영문자와 숫자로만 등록하실 수 있습니다.");
      strCheckObj.value="";
                        strCheckObj.focus();
                        return false;
                }
        }
        return true;
       
}


// 숫자와 알파벳 및 '-'만 등록되도록 체크
function fncValidString09AZDashCheck (strFrmName, strFieldName, strFieldNickName) {

    var ValidString="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-";
 var strCheckObj = eval("document."+strFrmName+"."+strFieldName);
 
        for (i=0; i<strCheckObj.value.length; i++) {
                if(ValidString.indexOf(strCheckObj.value.substring(i,i+1))<0) {
                        alert(strFieldNickName+" 항목에 허용할 수 없는 문자가 입력되었습니다.\n"+strFieldNickName+" 항목은 영문자와 숫자로만 등록하실 수 있습니다.");
      strCheckObj.value="";
                        strCheckObj.focus();
                        return false;
                }
        }
        return true;
       
}


function fncValidPasswordCheck (strFrmName, strFieldName, strFieldNickName) {
 return true;
}


// 숫자만입력되게처리
function checkNumberKey(str)
 {
  if (event.keyCode != 8)
  {
   if (event.keyCode < 45 || event.keyCode > 57 || ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97)))
       event.returnValue = false;
  }
 }


// 이메일 유효체크
function fncValidEmailCheck(frm,fieldname)
{
 reg = new RegExp("^[\\w\\-]+(
\\.[\\w\\-_]+)*@[\\w\\-]+(\\.[\\w\\-]+)*(\\.[a-zA-Z]{2,3})$", "gi");
 var emailobj = eval("document"+"."+frm+"."+fieldname);
 if (!reg.test(emailobj.value))
 {
  alert("잘못된 형식의 이메일 주소입니다.\n다시 입력해주세요.");
  emailobj.focus();
  return false;
 }
 else
  return true;
}


// 다음객체로 포커스이동
function funcNextFocus(frm,str,length,nextstr){

 var strCheckObj=eval("document"+"."+frm+"."+str);
 var strNextObj =eval("document"+"."+frm+"."+nextstr);

 if(length==strCheckObj.value.length){
  strNextObj.focus();
 }
}


// 체크박스 값변경
function chkval(frm,str){
 var strCheckObj=eval("document"+"."+frm+"."+str);
 if(strCheckObj.value=='Y'){
  strCheckObj.value='N';
 }
 else{
  strCheckObj.value='Y';
 }
}


// check 한 개수를 리턴한다.
function getCheckedCount( aElem )
{
 var elem = document.all;
 var cnt = 0;

 for ( var i=0; i<document.all.length; i++ )
 {
  if ( ( elem[i].type == "checkbox" ) && ( elem[i].checked ) && ( elem[i].name == aElem ) )
   cnt = cnt + 1;
 }
 return cnt;
}


// 지정된 이름을 가진 모든 checkbox를 check한다
function checkAll( aElem )
{
 var elem = document.all;
 var cnt = 0;
   
 for ( var i=0; i<document.all.length; i++ ){
  if ( ( elem[i].type == "checkbox" ) && ( elem[i].name == aElem ) ) elem[i].checked = true;
 }
}


// 지정된 이름을 가진 모든 checkbox를 check 해제한다
function uncheckAll( aElem )
{
 var elem = document.all;
 var cnt = 0;
   
 for ( var i=0; i<document.all.length; i++ ){
  if ( ( elem[i].type == "checkbox" ) && ( elem[i].name == aElem ) ) elem[i].checked = false;
 }
}


// 지정한 이름을 가진 모든 checkbox의 checked 값을 반전 한다.
function invertCheck( aElem )
{
 var elem = document.all;
 var cnt = 0;

 for ( var i=0; i<document.all.length; i++ )
 {
  if ( ( elem[i].type == "checkbox" ) && ( elem[i].name == aElem ) )
  {
   if ( elem[i].checked )
   {
    elem[i].checked = false;
   }
   else
   {
    elem[i].checked = true;
   }
  }
 }


// Radio에서 check 한 개수를 리턴한다.
function getRadioCheckedCount( aElem )
{
 var elem = document.all;
 var cnt = 0;

 for ( var i=0; i<document.all.length; i++ )
 {
  if ( ( elem[i].type == "radio" ) && ( elem[i].checked ) && ( elem[i].name == aElem ) )
   cnt = cnt + 1;
 }
 return cnt;
}


//지정된 이름을 가진 radio 폼의 선택 값을 리턴하다.
function getCheckedValue(radioObj) {
 if(!radioObj)
  return "";
 var radioLength = radioObj.length;
 if(radioLength == undefined)
  if(radioObj.checked)
   return radioObj.value;
  else
   return "";
 for(var i = 0; i < radioLength; i++) {
  if(radioObj[i].checked) {
   return radioObj[i].value;
  }
 }
 return "";
}

/**
// get 방식의 파라미터를 해당폼에 input hidden 객체로 생성한다.
*/
function get2post(frm,sSearch)
{
 if (sSearch.length > 0)
 {
  var asKeyValues = sSearch.split('&');
  var asKeyValue  = '';

  for (var i = 0; i < asKeyValues.length; i++)
  {
   asKeyValue = asKeyValues[i].split('=');
   var e = document.createElement("input");
   e.setAttribute("type","hidden");
   e.setAttribute("name",asKeyValue[0]);
   e.setAttribute("value",asKeyValue[1]);
   e.setAttribute("_temp","true");
   //  alert("[" + e.name +"]:[" + e.value +"]");
   frm.appendChild(e);
  }
 }
 //  alert("form 객체 갯수" + frm.elements.length);


// get2post로 생성한 임시 객체를 파괴한다. 
function removeTempAttribute(frm)
{
 var idx=0;
 while (idx<frm.elements.length)
 {
  var obj = frm.elements[idx];

  if( obj.getAttribute("_temp") != null && obj.getAttribute("_temp") == "true")
  {
   frm.removeChild(obj);
   continue;
  }
  idx++;
 }
}


//--- 페이징에서 쓸 함수
function goPage(pageUrl,tmpParam,tmppage)
{
 var ttFrm = document.temporaryFrm;
 ttFrm.method = "post";
 ttFrm.action = pageUrl ;
 get2post(ttFrm,tmpParam+"&page="+tmppage);
 ttFrm.submit();
 removeTempAttribute(ttFrm);
}


//이미지 크기에 맞는 새창 띄우기
//<a href="#" onClick="popimage('img01.jpg',250,167);return false">이미지 팝업 1</a>
function popimage(imagesrc,winwidth,winheight,wintitle)
{
 var look='width='+winwidth+',height='+winheight+',' ;
 popwin=window.open("","",look);
 popwin.document.open();
 popwin.document.write('<title>'+wintitle+'</title><body topmargin=0 leftmargin=0><img style=cursor:hand; onclick="self.close()" src="'+imagesrc+'"></body>');
 popwin.document.close();
}


'Javascript' 카테고리의 다른 글

javascript 내부의 <!-- --> 또는 //<![CDATA[ -- //]]> 의 이해.  (1) 2015.02.06
event.keyCode 번호표  (0) 2010.11.14
유용한 스크립트  (0) 2010.11.14
정규식  (0) 2010.11.14
Ajax Request 이해  (0) 2010.11.14
Posted by TIMEC
2010. 11. 14. 13:29
출저 - http://blog.daum.net/turnnig-pointer/16498260
=============================================================
     키     |      코드(숫자)
=============================================================
←(백스패이스) = 8
TAB = 9
ENTER = 13
SHIFT = 16
CTRL = 17
ALT = 18
PAUSEBREAK = 19
CAPSLOOK = 20
한/영 = 21
한자 = 25
ESC = 27

스패이스 = 32
PAGEUP = 33
PAGEDN = 34
END = 35
HOME =36

←(중간) = 37
↑(중간) = 38
→(중간) = 39
↓(중간) = 40

0 = 48
1 = 49
2 = 50
3 = 51
4 = 52
5 = 53
6 = 54
7 = 55
8 = 56
9 = 57
INSERT = 45
DELETE = 46

A = 65
B = 66
C = 67
D = 68
E = 69
F = 70
G = 71
H = 72
I = 73
J = 74
K = 75
L = 76
M = 77
N = 78
O = 79
P = 80
Q = 81
R = 82
S = 83
T = 84
U = 85
V = 86
W = 87
X = 88
Y = 89
Z = 90

윈도우(왼쪽) = 91
윈도우(오른쪽) = 92
기능키 = 93
0(오른쪽) = 96
1(오른쪽) = 97
2(오른쪽) = 98
3(오른쪽) = 99
4(오른쪽) = 100
5(오른쪽) = 101
6(오른쪽) = 102
7(오른쪽) = 103
8(오른쪽) = 104
9(오른쪽) = 105
.(오른쪽) = 110
/(오른쪽) = 111
*(오른쪽) = 106
+(오른쪽) = 107
-(오른쪽) = 109
F1 = 112
F2 = 113
F3 = 114
F4 = 115
F5 = 116
F6 = 117
F7 = 118
F8 = 119
F9 = 120
F10 = 121
F11 = 122
F12 = 123
NUMLOCK = 144
SCROLLLOCK = 145
=(중간) = 187
-(중간) = 189
`(왼쪽콤마) = 192
(중간) = 220


'Javascript' 카테고리의 다른 글

javascript 내부의 <!-- --> 또는 //<![CDATA[ -- //]]> 의 이해.  (1) 2015.02.06
common.js  (0) 2010.11.14
유용한 스크립트  (0) 2010.11.14
정규식  (0) 2010.11.14
Ajax Request 이해  (0) 2010.11.14
Posted by TIMEC
2010. 11. 14. 13:28
출저 - http://blog.daum.net/turnnig-pointer/16498260

* 입력값이 숫자인지를 확인한다. (' '까지 괜찮음)

 * param : sVal 입력스트링

 * return : Boolean True이면 숫자값

 function isNumberSpace(sVal)

 

 * sVal 값이 숫자인지를 확인한다.('.'까지 괜찮음)

 * param : sVal 입력스트링

 * return : Boolean  True이면 숫자값

function isNumberSpace(sVal)

 

 * 입력값의 앞에 정해진 자리수만큼 0을 채운다. 

 * param : sVal 입력스트링, iSize

 * return : String

function fillZero(sVal, iSize)

 


 * 길이가1인 경우 앞에 "0"을 붙인다.

 * param : sVal 입력스트링

 * return : String  "0"값을 포함하는 값

function addZero(sVal)


 

 * 날짜 여부를 확인한다.(월일 or 년월 or 년월일)

 * param : sYmd 입력스트링(MMDD or YYYYMM or YYYYMMDD)

 * return : Boolean true이면 날짜 범위임

 * 수정   : 월이나 일에 00 입력시 스크립트 에러. trimZero 부분을 function isDate(sYmd)

 

 * 날짜 여부를 확인한다.(년월일)

 * param : sYmd 입력스트링(YYYYMMDD)

 * return : Boolean true이면 날짜 범위임

function isDateYMD(sYmd)


 

 * 날짜 여부를 확인한다.(월일)

 * param : sMD 입력스트링(MMDD)

 * return : Boolean true이면 날짜 범위임

function isDateMD(sMD)

 

 * 날짜 여부를 확인한다.(년월)

 * param : sYM 입력스트링(YYYYMM)

 * return : Boolean true이면 날짜 범위임

function isDateYM(sYM)

 

 * 년월을 입력받아 마지막 일를 반환한다(년월)

 * param : sYM 입력스트링(YYYYMM)

 * return : String 해당월의 마지막날

function lastDay(sYM)

 

 * 대소문자를 포함한 영문자인지 확인한다.

 * param : sVal 입력문자열

 * return : Boolean true이면 알파벳

function isAlpha(sVal)

 

 * 영문자와 숫자 구성된 문자열인지 확인

 * param : sVal 입력문자열

 * return : Boolean true이면 영문자,숫자로 구성된 문자열

function isAlphaNumeric(sVal)

 

 * 문자열의 길이를 return (한글:2자)

 * param : sVal 입력문자열

 * return : int 입력문자열의 길이

function strLength(sVal)


 

 * 문자열 길이 체크

 * param : str 필드객체, field 필드명

 * return : boolean

function chkStrLength(str,field)


 

 * 한글이지 여부 체크

 * param : sVal 입력문자열

 * return : Boolean true이면 한글

function isHangul(sVal)

 


 * 입력받은 날짜로부터 몇일 후의 날짜를 반환하기

 * param : ObjDate객체, 일수, 결과Data객체

 * return :

function calcDate(objDate,iDay,objResultDate)

 

 * 숫자 0으로 초기화 된 1차원 배열을 생성한다.

 * param : iSize 배열 크기

 * return : this 배열

function makeArray(iSize)

 

 * 숫자 분리자(,)(.)가 있는 숫자이거나 일반숫자형태인지 검사한다.

 * param : sVal

 * return : Boolean

function isMoneyNumber(sVal)

 

 * 숫자 분리자(,)만 있는 숫자이거나 일반숫자형태인지 검사한다.

 * param : sVal

 * return : Boolean

function isMoneyNumber2(sVal)

 

 * 숫자 분리자(.)만 있는 숫자이거나 일반숫자형태인지 검사한다.

 * param : sVal

 * return : Boolean

function isMoneyNumber3(sVal)

 

 * 숫자 분리자(.)만 있는 숫자인지 검사한다.

 * param : sVal

 * return : Boolean

function isMoneyNumber4(sVal){   


 

 * 소수점이 있는 숫자이면서 정해진 자릿수에 맞는 형식인지 확인다. 

 * param : sVal 입력객체, iSize1 정수자릿수, iSize2 소수자릿수

 * return : boolean

function isMoneyNumber5(sVal, iSize1, iSize2)

 

 * 소수점 숫자표현(소수점 위의 3자리마다 "," 맞춤)

 * param : val

 * return : String

function getMoneyType(val)

 

 * 부호가 있는 소수점 숫자표현(소수점 위의 3자리마다 "," 맞춤)

 * param : val

 * return : String

function getSignMoneyType(val)

 

 

 * 콤마를 제거한 숫자형태 문자열로 반환(부호와 소수점도 없앰)

 * param : val

 * return : String

function getOnlyNumber(val)

 

 * 콤마를 제거한 숫자형태 문자열로 반환(부호, 소수점 그대로)

 * param : val

 * return : String

  function getOnlyNumberDot(val)

 

 

 * 콤마를 제거한 부호가 있는 숫자형태 문자열로 반환

 * param : val

 * return : String

function getOnlySignNumber(val)


 

 

 * 앞뒤 공백을 제거한다.

 * param : sVal

 * return : String

function Trim(sVal)

 

 * 앞 공백을 제거한다.

 * param : sVal

 * return : String

function LTrim(sVal)

 

 * 뒤 공백을 제거한다.

 * param : sVal

 * return : String

function RTrim(sVal)


 

 

// DESCRIPTION  : 공백문자 제거

// 함수명       : MTrim(공백이 있는 문자열)

// Return Value : 공백이 제거된 문자열

function MTrim(sVal){

 

 * 공백만 존재하거나 아무것도 없는지 확인한다.

 * param : sVal

 * return : boolean (true이면 공백이나 Empty이다)

function isEmpty(sVal){

 

 * 현재 컨트롤과 MaxLength 받아서 MaxLength 되면

   다음 컨트롤로 이동

 * param : objCurrent, objNext

 * return :

function focusMove(objCurrent, objNext)

 

 * 현재 컨트롤과 MaxLength 받아서 MaxLength 되면

   다음 컨트롤로 이동(선택)

 * param : objCurrent, objNext

 * return :

function focusMoveSelect(objCurrent, objNext)

 

 * 완료된 날짜값에 대해 "/" 추가

 * param : me(value)

 * return : String

function calOnMask(me){

 

 * 날짜값 "/" 제거

 * param :  me(value)

 * return : String "/" 제거된 날짜값

function calOffMask(me){

 

 

 * 날짜값 자동 "/" 붙임.(완성된 날짜값에 대해 /붙임)

 * param :

 * return :

function cal_value2(me){

 

 * 오늘 날짜 생성 ( "/" 붙여서 리턴)

 * param :

 * return : todate

function todate() {

 

 

 Spec     : 숫자입력시 3자리마다 자동으로 콤마 찍기

 Argument : string

 Return   : string

 Example  : onkeyup="comma_value(this)"

function comma_value(sval)


 

 Spec     : 숫자입력시 3자리마다 자동으로 콤마 찍기

 Argument : string

 Return   : string

 Example  : onkeyup="comma_value(str)"

function formatNumbertoString(cur)

 

 

// 숫자만 입력 (소수점 허용, 음수 허용)

// 사용법 : onKeyPress = onlyNum();

function onlyNum()

 

// 숫자만 입력 (소수점 허용, 음수 불가)

// 사용법 : onKeyPress = onlyNum2();

function onlyNum2()

 

 

// 숫자만 입력 (소수점 불가, 음수 허용)

// 사용법 : onKeyPress = onlyNum3();

function onlyNum3()

 

// 숫자만 입력 (소수점 불가, 음수 불가)

// 사용법 : onKeyPress = onlyNum4();

function onlyNum4()

 

 

 

 

 * 입력완료된 숫자값에 대하여 콤마를 찍어줄때 사용

   (소수점 이하 처리 안됨)

 * 콤마 형식을 사용할 경우에는 onkeyup이벤트로 사용하기 바라며,

 * 다음의 펑션을 호출할때는 comma_value(me) 펑션을 호출하기 바람.

 * param : value

function numOnMask(me){

 

 * 콤마가 들어간 숫자에서 ","를 뺀다.

 * param : value

function numOffMask(me){

 

 

// 입력 완료된 숫자 값에 컴마를 적용하여준다

 (소수점 이하는 "," 안 붙음)

// return : String

function numOnMask2(me){

 

// 입력 완료된 숫자 값에 컴마를 적용하고 소수점 이하는 삭제한다

// return : String

function numOnMask3(me){ //단순히 값에 컴마를 적용할때 사용

 

 * 입력값을 소수점 이하 몇 자리까지 보여줄지 정한다. 

 * 소수점 이하 자리수가 입력된 값보다 작으면 0으로 채운다.

 * param : sVal 입력스트링, iSize 소수자릿수

 * return : String

function numOnMask4(sVal,iSize)

 

 * 입력값에 마스킹을 적용한다.

   (소수점 이하와 부호를 삭제하고 콤마추가)

 * param : sVal 입력스트링

 * return : String

function numOnMask5(sVal)


 

 * 입력값에 마스킹을 적용한다.

   (부호를 삭제하고 콤마추가. 소수점은 그대로 둠)

 * param : sVal 입력스트링

 * return : String

function numOnMask6(sVal)

 

 

 * 숫자 외의 값이 입력되어있으면 false 리턴

 * param : sval (object)

 * return :

function onlyNumber(sval) {

 

 

 * 특수문자 값이 입력되었는지 체크(특수문자가 있으면 false 리턴)

 * param : sval (object)

 * return :

function chkValidChar(sval) {


 

 

 *

 * 윈도우 오픈1 (사용자 지정 위치생성)

 * param : wUrl                지정url

 * param : wTitle        지정타이틀

 * param : wTop                지정 창 높이정렬기준

 * param : wLeft   지정 창 왼쪽정렬기준

 * param : wWidth        창넓이

 * param : wHeight        창높이

 * param : wSco                스크롤바 생성유무, 1:생성 0:비생성

function win_open(wUrl,wTitle,wTop,wLeft,wWidth,wHeight,wSco) 

 

 *

 * 윈도우 오픈2 (무조건 가운데 생성)

 * param : wUrl                지정url

 * param : wTitle        지정타이틀

 * param : wWidth        창넓이

 * param : wHeight        창높이

 * param : wSco                스크롤바 생성유무, 1:생성 0:비생성

function win_open2(wUrl,wTitle,wWidth,wHeight,wSco)

 

 *

 * 윈도우 오픈3 (무조건 전체 생성)

 * param : wUrl                지정url

 * param : wTitle        지정타이틀

 * param : wWidth        창넓이

 * param : wHeight        창높이

 * param : wSco                스크롤바 생성유무, 1:생성 0:비생성

function win_open3(wUrl,wTitle)

 

 


 

/**

 * 두 날짜에 며칠 차이나는지 구함

 * from_val이 to_val보다 크면 -붙여서 리턴

 */

function getDayInterval(from_val,to_val)

 

 

 

/**
===============================================================================
주  시 스 템 : 공통 개발
서브  시스템 : 없음
프로그램  ID : JCommon.js
프로그램  명 : 공통 기능 Javascript
프로그램개요 : 공통적으로 사용되는 Javascript를 정의한다
작   성   자 : 유명현, 최선재
작   성   일 : 2002.04.04
마지막 수정일 : 2003.11.30
===============================================================================

 


/* 오른쪽 마우스 금지 및 Ctrl key 금지 ======================================*/
document.onkeydown=cntrcheck;
document.onmousedown=Right;
var tabKeyon = "N";
if (document.layers) {
    window.captureEvents(Event.MOUSEDOWN);
    window.onmousedown=Right;
}

function Right(e) {
//    start_timer();
    //if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2))
    //    return false;
    //else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3)) {
    //    alert!("오른쪽 마우스는 사용하실수 없습니다.");
    //    return false;
    //}
    //return true;
}


function cntrcheck() {
//    start_timer();
 var keyValue = event.keyCode;
 /*ctrl 키 제어*/
 //if (keyValue == '17')  
 //{
 // alert!("ctrl 키는 쓰실수 없습니다.");
 //}
 /*F11 제어*/
 if (keyValue == '122')
 {
  alert!("F11키는 사용할수 없습니다");
  event.keyCode=38;
 }
 /*F5 제어*/
 //if (keyValue == '116')
 //{
 //alert!("F5키는 사용할수 없습니다");
 //event.keyCode=38;
 //}
 /*BackSpace 제어*/
 //if (keyValue == '8')
 //{
 //   alert!("BackSpace는 사용할수 없습니다");
 // event.keyCode=38;
 //}
 /* tabKey 제어*/
 if (keyValue == '9')
 {
 tabKeyon = "Y";
 }
}

/* 금지 태그 end=================================== */

/*=============================================================================*
 * 입력값이 숫자인지를 확인한다
 * param : sVal 입력스트링
 * return : Boolean True이면 숫자값
 *============================================================================*/
 
function isNumber(sVal)
{   
  if(sVal.length < 1)
  {
   return false;
  }

  for(i=0; i<sVal.length; i++)
  {
    iBit = parseInt(sVal.substring(i,i+1));     //문자(Char)를 숫자로 변경
    if(('0' < iBit) || ('9' > iBit))
    {
      //alert!(i+':'+iBit+':'+'Mun');
    }
    else
    {
      return false;
    }
  }
  return true;
}


/*=============================================================================*
 * 입력값이 숫자인지를 확인한다. (' '까지 괜찮음)
 * param : sVal 입력스트링
 * return : Boolean True이면 숫자값
 *============================================================================*/
function isNumberSpace(sVal)
{   
  if(sVal.length < 1)
  {
    return false;
  }
  
  for(var i=0;i<sVal.length;i++)
    {
      sBitData = sVal.substring(i,i+1);     //문자열의 문자(char)를 넣는다
      if(sBitData == ' ')
      {
      }
      else
      {
        iBit = parseInt(sVal.substring(i,i+1)); //문자(char)를 숫자로
        if(('0' < iBit) || ('9' > iBit) || (' ' == sBitData))
        {
        }
        else
        {
    return false;
        }
      }
    }
  return true;
}


/*=============================================================================*
 * sVal 값이 숫자인지를 확인한다.('.'까지 괜찮음)
 *
 * param : sVal 입력스트링
 *
 * return : Boolean  True이면 숫자값
 *============================================================================*/
function isNumberDot(sVal)
{
 if (sVal.length < 1) {
     return false;
 }
 
 var result=0;
 var position=0;
 var bMinus;

 //마이너스 부호의 갯수를 카운트하여 올바른지 확인
 for(position=0; position<sVal.length; position++)
 {
     if( getAt(sVal, position) == '-' )
      {
   result += 1;
     }
 }

 if(result > 1)
     return false;
 
 result = 0;
 //소수점의 갯수를 카운트하여 올바른지 확인
 for(position=0; position<sVal.length; position++)
 {
     if( getAt(sVal, position) == '.' )
      {
   result += 1;
     }
 }

 if(result > 1)
     return false;

 //마이너스 부호를 가지고 있는지 확인. 있다면 부호는 빼낸다.
 if(sVal.substr(0,1) == '-')
 {
     bMinus = true;
     sVal = sVal.substring(1, sVal.length);    
 }

 //맨앞에 소수점이 있거나 맨 뒤에 있을 경우 0 을 추가해 줌.
 if(sVal.substring(0,1) == '.')
     sVal = '0' + sVal;
 else if(sVal.substring(sVal.length-1,sVal.length) == '.')
     sVal = sVal + '0';
 
 //검사.
 for(var position=0; position<sVal.length; position++)
 {
     if( (getAt(sVal, position) < '0' || getAt(sVal, position) >'9') && getAt(sVal,position) != '.' )
   return false;
 }
    return true;
}

function getAt(sVal, position)
{
 return sVal.substring(position, position+1)    
}


/*=============================================================================*
 * 앞자리의 연속된 Zero 값을 자른다.
 * param : sVal 입력스트링
 * return : String  Zero값을 자른 값
 *============================================================================*/
function trimZero(sVal)
{
  var i;
  i = 0;
  while (sVal.substring(i,i+1) == '0')
  {
    i++;
  }
  return sVal.substring(i);
}

/*=============================================================================*
 * 입력값의 앞에 정해진 자리수만큼 0을 채운다. 
 * param : sVal 입력스트링, iSize
 * return : String
 *============================================================================*/
function fillZero(sVal, iSize)
{
    while(sVal.length < iSize) 
    {
  sVal = "0" + sVal;
    }
 return sVal;
}


/*=============================================================================*
 * 길이가1인 경우 앞에 "0"을 붙인다.
 *
 * param : sVal 입력스트링
 *
 * return : String  "0"값을 포함하는 값
 *============================================================================*/
function addZero(sVal)
{
  var iLen = sVal.length;   //인수값의 길이를 구한다.
  if(iLen == 1)
  {
    sVal = "0"+sVal;
  }
  else if(iLen == 0)
  {
    return;
  }
  return sVal;
}

/*=============================================================================*
 * 날짜 여부를 확인한다.(월일 or 년월 or 년월일)
 *
 * param : sYmd 입력스트링(MMDD or YYYYMM or YYYYMMDD)
 *
 * return : Boolean true이면 날짜 범위임
 *
 * 수정   : 월이나 일에 00 입력시 스크립트 에러. trimZero 부분을 수정(2003/11/19)
 *============================================================================*/
function isDate(sYmd)
{
  var bResult;  // 결과값을 담는 변수(Boolean)

  switch (sYmd.length)
  {
    case 4://월일
      bResult = isDateMD(sYmd);
      break;
    case 6://년월
      bResult =  isDateYM(sYmd); 
      break;
    case 8://년월일
      bResult =  isDateYMD(sYmd);
      break;
    default:
      bResult = false;  // 날짜 값이 아님
      break;
  }
  return bResult;
}

/*=============================================================================*
 * 날짜 여부를 확인한다.(년월일)
 *
 * param : sYmd 입력스트링(YYYYMMDD)
 *
 * return : Boolean true이면 날짜 범위임
 *============================================================================*/
function isDateYMD(sYmd)
{
  // 길이 확인      //@@ 12.5 순서 변경
  if(sYmd.length != 8)
  {
    alert!('일자를 모두 입력하십시오');
    return false;
  }

  // 숫자 확인 
  if(!isNumber(sYmd))
  {
    alert!('날짜는 숫자만 입력하십시오');
    return false;
  }

  var iYear = parseInt(sYmd.substring(0,4),10);  // 년도 입력(YYYY)
  var iMonth = parseInt(sYmd.substring(4,6),10);   //월입력(MM)
  var iDay = parseInt(sYmd.substring(6,8),10);     //일자입력(DD)

  if((iMonth < 1) ||(iMonth >12))
  {
    alert!(iMonth+'월의 입력이 잘못 되었습니다.');
 return false;
  }
 
  //각 달의 총 날수를 구한다
  var iLastDay = lastDay(sYmd.substring(0,6));  // 해당월의 마지말날 계산

  if((iDay < 1) || (iDay > iLastDay))
  {
    alert!(iMonth+'월의 일자는 1 - '+ iLastDay +'까지입니다.');
    return false;
  }
  return true;
}

/*=============================================================================*
 * 날짜 여부를 확인한다.(월일)
 *
 * param : sMD 입력스트링(MMDD)
 *
 * return : Boolean true이면 날짜 범위임
 *============================================================================*/
function isDateMD(sMD)
{
  // 숫자 확인
  if(!isNumber(sMD))
  {
    alert!('숫자만 입력하십시오');
    return false;
  }

  // 길이 확인
  if(sMD.length != 4)
  {
    alert!('일자를 모두 입력하십시오');
    return false;
  }

  var iMonth = parseInt(sMD.substring(0,2),10);  //해당월을 숫자값으로
  var iDay = parseInt(sMD.substring(2,4),10);    //해당일을 숫자값으로

  if((iMonth < 1) ||(iMonth >12))
  {
    alert!(iMonth+'월의 입력이 잘못 되었습니다.');
    return false;
  }
 
  //각 달의 총 날수를 구한다
  if (iMonth < 8 )
   {
 var iLastDay = 30 + (iMonth%2);
   }

  else
   {
 var iLastDay = 31 - (iMonth%2);
   }

  if (iMonth == 2)
  {
    iLastDay = 29;
  }
 
  if((iDay < 1) || (iDay > iLastDay))
  {
    alert!(iMonth+'월의 일자는 1 - '+iLastDay+'까지입니다.');
    return false;
  }
  return true;  
}

/*=============================================================================*
 * 날짜 여부를 확인한다.(년월)
 *
 * param : sYM 입력스트링(YYYYMM)
 *
 * return : Boolean true이면 날짜 범위임
 *============================================================================*/
function isDateYM(sYM)
{
  // 숫자 확인
  if(!isNumber(sYM))
  {
    alert!('날짜는 숫자만 입력하십시오');
    return false;
  }

  // 길이 확인
  if(sYM.length != 6)
  {
    alert!('일자를 모두 입력하십시오');
    return false;
  }
 
  var iYear = parseInt(sYM.substring(0,4),10); //년도값을 숫자로
  var iMonth = parseInt(sYM.substring(4,6),10);  //월을 숫자로
 
  if((iMonth < 1) ||(iMonth >12))
  {
    alert!(iMonth+'월의 입력이 잘못 되었습니다.');
    return false;
  }
  return true;  
}

 


/*=============================================================================*
 * 년월을 입력받아 마지막 일를 반환한다(년월)
 *
 * param : sYM 입력스트링(YYYYMM)
 *
 * return : String 해당월의 마지막날
 *============================================================================*/
function lastDay(sYM)
{
  if(sYM.length != 6)
  {
    alert!("정확한 년월을 입력하십시오.");
    return;
  }
 
  if(!isDateYM(sYM))
  {
     return;
  }
 
  daysArray = new makeArray(12);    // 배열을 생성한다.

  for (i=1; i<8; i++)
  {
    daysArray[i] = 30 + (i%2);
  }
  for (i=8; i<13; i++)
  {
    daysArray[i] = 31 - (i%2);
  }  
  var sYear = sYM.substring(0, 4) * 1;
  var sMonth = sYM.substring(4, 6) * 1;
 
  if (((sYear % 4 == 0) && (sYear % 100 != 0)) || (sYear % 400 == 0))
  {
  daysArray[2] = 29;
  }
  else
  {
  daysArray[2] = 28;
  }
 
  return daysArray[sMonth].toString();
}


/*=============================================================================*
 * 대소문자를 포함한 영문자인지 확인한다.
 *
 * param : sVal 입력문자열
 *
 * return : Boolean true이면 알파벳
 *============================================================================*/
function isAlpha(sVal)
{
  // Alphabet 값
  var sAlphabet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var iLen=sVal.length;   //입력값의 길이

  for(i=0;i<iLen;i++)
  {
    if(sAlphabet.indexOf(sVal.substring(i,i+1))<0)
    {
      alert!("허용된 문자가 아닙니다.\n영문으로 입력해 주십시오.");    
      return false;
    }
  }
  return true;  
}

/*=============================================================================*
 * 영문자와 숫자 구성된 문자열인지 확인
 *
 * param : sVal 입력문자열
 *
 * return : Boolean true이면 영문자,숫자로 구성된 문자열
 *============================================================================*/
function isAlphaNumeric(sVal)
{
  var sAlphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  var iLen      = sVal.length;

  for ( i = 0; i < iLen; i++ )
  {
    if ( sAlphabet.indexOf(sVal.substring(i, i+1)) < 0 )
    {
      return false;
    } 
  }
  return true;  
}  

/*=============================================================================*
 * 문자열의 길이를 return (한글:2자)
 *
 * param : sVal 입력문자열
 *
 * return : int 입력문자열의 길이
 *============================================================================*/
function strLength(sVal)

  var sBit = '';    // 문자열의 문자(Char)
  var iLen = 0; //문자열 길이

  for ( i = 0 ; i < sVal.length ; i++ )
  {
    sBit = sVal.charAt(i);
    if ( escape( sBit ).length > 4 )
    {
      iLen = iLen + 2;
    }
 else
 {
      iLen = iLen + 1;
    }
  }
  return iLen;
}


/*=============================================================================*
 * 문자열 길이 체크
 * param : str 필드객체, field 필드명
 * return : boolean
 *============================================================================*/
function chkStrLength(str,field)
{
 iSize = str.getAttribute("Maxlength")

 if (field == null)
  field = '';

 if ( strLength(str.value) > iSize)
 {
//  if (flag=1)
   alert!("입력가능한 "+field+" 최대길이는 영문/숫자일 때 "+iSize+"자, 한글일 때 "+Math.floor(iSize/2)+"자입니다.");
//  else
//   alert!(field+" 최대길이는 "+iSize+"자 입니다.");
        str.select();
     str.focus();
  return false;
 }

 return true;
}

 

/*=============================================================================*
 * 한글이지 여부 체크
 *
 * param : sVal 입력문자열
 *
 * return : Boolean true이면 한글
 *============================================================================*/
function isHangul(sVal)
{
  var sBit = '';

  for(i=0;i<sVal.length;i++)
  {
    sBit = sVal.charAt(i);
    if(escape( sBit ).length <= 4)
    {
   alert!("한글만 입력하십시오.");
      return false;
    }
  }
  return true;
}

/*=============================================================================*
 * 주민등록 여부를 확인한다.(내국인)
 *
 * param : sID 입력문자열(주민번호 13자리)
 *
 * return : Boolean true이면 적합한 주민번호
 *============================================================================*/
function isSocialNO(ssn)
{
 var digit=0
    for (var i=0 ; i<ssn.length ; i++){
        var str_dig=ssn.substring(i,i+1);
        if (str_dig<'0' || str_dig>'9'){
            digit=digit+1
        }
    }
    if(digit>0)
    {
        return false;
    }
      
    var year   = parseInt(ssn.substring(0,2));
    var month  = parseInt(ssn.substring(3,4));
    var day    = parseInt(ssn.substring(5,6));
    var gender = parseInt(ssn.substring(7,7));
    var local  = parseInt(ssn.substring(8,11));
    var key    = parseInt(ssn.substring(12));
       
    if( (month<0) || (month>12) )
    {
        return false;
    }
       
    if( (month==1) || (month==3) || (month==5) || (month==7) || (month==8) || (month==10) || (month==12) )
    {
        if( (day<0) || (day>31) )
        {
            return false;
        }
    }

    if( (month==4) || (month==6) || (month==9) || (month==10) )
    {
        if( (day<0) || (day>30) )
        {
            return false;
        }
    }
       
    if(month==2)
    {
        if( (year==0) && ( (gender==1) || (gender==2) ) )
        {
            if( (day<0) || (day>28) )
            {
                return false;
            }
        }
        else if( (year==0) && ( (gender==3) || (gender==4) ) )
        {
            if( (day<0) || (day>29) )
            {
                return false;
            }
        }
        else if(year%4==0)
        {
            if( (day<0) || (day>29) )
            {
                return false;
            }              
        }
        else
        {
            if( (day<0) || (day>28) )
            {
                return false;
            }
        }
    }

    if( (gender<0) || (gender>4) )
    {
        return false;
    }

    cBit = 0;
    sCode="234567892345";

    for(i=0;i<12;i++)
    {
        cBit = cBit+parseInt(ssn.substring(i,i+1))*parseInt(sCode.substring(i,i+1));
    }

    cBit=11-(cBit%11);
    cBit=cBit%10;

    if(key!=cBit)
    {
  return false;
    }
    else
    {
        return true;
    }
}

/*=============================================================================*
 * 주민등록 여부를 확인한다.(외국인)
 *
 * param : sID 입력문자열(주민번호 13자리)
 *
 * return : Boolean true이면 적합한 주민번호
 *============================================================================*/
function isFgnSocialNO(ssn) {
 if ((ssn.charAt(6) == "5") || (ssn.charAt(6) == "6"))
 {
    birthYear = "19";
 }
 else if ((ssn.charAt(6) == "7") || (ssn.charAt(6) == "8"))
 {
    birthYear = "20";
 }
 else if ((ssn.charAt(6) == "9") || (ssn.charAt(6) == "0"))
 {
    birthYear = "18";
 }
 else
 {
   return false;
 } 
 
 birthYear += ssn.substr(0, 2);
 birthMonth = ssn.substr(2, 2) - 1;
 birthDate = ssn.substr(4, 2);
 birth = new Date(birthYear, birthMonth, birthDate);
 
 if ( birth.getYear() % 100 != ssn.substr(0, 2) ||
   birth.getMonth() != birthMonth ||
   birth.getDate() != birthDate) {
  
   return false;
 }

    var sum = 0;
    var odd = 0;
   
    buf = new Array(13);
    for (i = 0; i < 13; i++) buf[i] = parseInt(ssn.charAt(i));

    odd = buf[7]*10 + buf[8];
   
    if (odd%2 != 0) {
      return false;
    }

    if ((buf[11] != 6)&&(buf[11] != 7)&&(buf[11] != 8)&&(buf[11] != 9)) {
      return false;
    }
     
    multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
    for (i = 0, sum = 0; i < 12; i++) sum += (buf[i] *= multipliers[i]);


    sum=11-(sum%11);
   
    if (sum>=10) sum-=10;

    sum += 2;

    if (sum>=10) sum-=10;

    if ( sum != buf[12]) {
        return false;
    }
    else {
        return true;
    }
}

/*=============================================================================*
 * 입력받은 날짜로부터 몇일 후의 날짜를 반환하기
 *
 * param : ObjDate객체, 일수, 결과Data객체
 *
 * return :
 *============================================================================*/
function calcDate(objDate,iDay,objResultDate)
{
  daysArray = new makeArray(12); //월별 공간을 생성
 
  for(i=1; i<13; i++) 
  {
    daysArray[i] = 30 + (i%2);
  }
  
  var sYear   = objDate.value.substring(0, 4) * 1;
  var sMonth  = objDate.value.substring(4, 6) * 1;
  var sDay    = objDate.value.substring(6, 8) * 1;
 
  daysArray[2] = lastDay(sYear + "02");
 
  var iMoveRemain = iDay * 1 + sDay;
  var iCurMonth   = sMonth;
  var iCurYear    = sYear;
 
  while (iMoveRemain > daysArray[iCurMonth])
  {
    iMoveRemain = iMoveRemain - daysArray[iCurMonth];
  
    iCurMonth = iCurMonth + 1;
    if (iCurMonth > 12)
    {
      iCurMonth = 1;
      iCurYear = iCurYear + 1;   
      daysArray[2] = lastDay(iCurYear + "02");
    }
  } //end of while
 
  iCurMonth = addZero(iCurMonth.toString());
  iMoveRemain = addZero(iMoveRemain.toString());
 
  objResultDate.value = iCurYear + iCurMonth + iMoveRemain;
}

/*=============================================================================*
 * 숫자 0으로 초기화 된 1차원 배열을 생성한다.
 *
 * param : iSize 배열 크기
 *
 * return : this 배열
 *============================================================================*/
function makeArray(iSize)
{
  this.length = iSize;

  for (i = 1; i <= iSize; i++)
  {
    this[i] = 0;
  }
  return this;
}

/*=============================================================================*
 * 숫자 분리자(,)(.)가 있는 숫자이거나 일반숫자형태인지 검사한다.
 *
 * param : sVal
 *
 * return : Boolean
 *============================================================================*/
function isMoneyNumber(sVal)
{   
  var iAbit;
 
  if (sVal.length < 1) return true;
  for (i=0; i<sVal.length; i++)
  {
    iAbit = parseInt(sVal.substring(i,i+1));
    if (!(('0' < iAbit) || ('9' > iAbit)))
    {
      if (sVal.substring(i, i+1) == ',' || sVal.substring(i, i+1) == '.' )
      {
      }
      else
      {
        return false;
      }
    }
  }
  return true;
}

/*=============================================================================*
 * 숫자 분리자(,)만 있는 숫자이거나 일반숫자형태인지 검사한다.
 *
 * param : sVal
 *
 * return : Boolean
 *============================================================================*/
function isMoneyNumber2(sVal)
{   
  var iAbit;
 
  if (sVal.length < 1) return true;
  for (i=0; i<sVal.length; i++)
  {
    iAbit = parseInt(sVal.substring(i,i+1));
    if (!(('0' < iAbit) || ('9' > iAbit)))
    {
      if (sVal.substring(i, i+1) == ',')
      {
      }
      else
      {
        return false;
      }
    }
  }
  return true;
}

/*=============================================================================*
 * 숫자 분리자(.)만 있는 숫자이거나 일반숫자형태인지 검사한다.
 * param : sVal
 * return : Boolean
 *============================================================================*/
function isMoneyNumber3(sVal)
{   
  var iAbit;
  var deci_cnt = 0;
  if (sVal.length < 1) return true;
  for (i=0; i<sVal.length; i++)
  {
    iAbit = parseInt(sVal.substring(i,i+1));
    if (!(('0' < iAbit) || ('9' > iAbit)))
    {
      if (sVal.substring(i, i+1) == '.' )
      {
    deci_cnt = deci_cnt + 1;//소수점 이하가 있는지 파악 (1이면 소수점 이하 존재)
      }
      else
      {
        return false;
      }
    }
  }
  if (deci_cnt > 1)
  {
   return false; 
  }
  return true;
}
/*=============================================================================*
 * 숫자 분리자(.)만 있는 숫자인지 검사한다.
 *
 * param : sVal
 *
 * return : Boolean
 *============================================================================*/
function isMoneyNumber4(sVal){   
  var deci_cnt = 0;
  for (i=0; i<sVal.length; i++)
  {
   
      if (sVal.substring(i, i+1) == '.' ){
    deci_cnt = deci_cnt + 1;//소수점있는지여부
      }
  
  }
  if (deci_cnt > 0)
  {
   return true;
  }
  return false;
}


/*=============================================================================*
 * 소수점이 있는 숫자이면서 정해진 자릿수에 맞는 형식인지 확인한다. 
 * param : sVal 입력객체, iSize1 정수자릿수, iSize2 소수자릿수
 * return : boolean
 *============================================================================*/
function isMoneyNumber5(sVal, iSize1, iSize2)
{
 if(isMoneyNumber(sVal))  // ,나 .가 들어가는 숫자인지 확인
 {
  var e = sVal.value;
  e = e.split(".");
     e[0] = numOffMask(e[0]);
  if (!e[1]) {
   e[1] = 0;     
  }  
  
  var aVal = e[0] + "." + e[1];

  if (isNumberDot(aVal)) {
   // 입력된 값이 설정된 정수자릿수 또는 소숫점 이하보다 크면 false
   if (e[0].length > iSize1 || e[1].length > iSize2)
    return false;
   else
    return true;
  }
  else {
      return false;
  }

 }
 else {
  return false;
 }
}

 

/*=============================================================================*
 * 소수점 숫자표현(소수점 위의 3자리마다 "," 맞춤)
 * param : val
 *
 * return : String
 *============================================================================*/
function getMoneyType(val)
{
  if (typeof val == "number")
  {
    val = val.toString();
  }
 
  var value = getOnlyNumberDot(val);
 
  var sResult = "";

  if (value.length == 0)
  {
    alert!("숫자만 입력하십시오.");
    return;
  }

  if (! isMoneyNumber(value))
  {
    alert!("숫자만 입력하십시오.");
    return;
  }
 
  var nI;
  var nJ = -1;
  var subOne;
  var flag = false;

  for (nI = value.length - 1; nI >= 0; nI--)
  {
    subOne = value.substring(nI, nI + 1);
    sResult = subOne + sResult;


 if (subOne == '.')
 {
  flag = true;
 }

 if (flag == true)
 {
  nJ = nJ + 1;
 }

    if ((nJ % 3 == 0) && (nI != 0) && (nJ != 0))
    {
      sResult = "," + sResult;
    }
  }
  return sResult;
}

/*=============================================================================*
 * 부호가 있는 소수점 숫자표현(소수점 위의 3자리마다 "," 맞춤)
 *
 * param : val
 *
 * return : String
 *============================================================================*/
function getSignMoneyType(val)
{
  if (typeof val == "number")
  {
  val = val.toString();
  }

  var s1 = val.substring(0,1);
  var slen = val.length;
  var sign = "";
  var ret  = "";
  if (val == "-Infinity")
  {
  return "0";
  }
 
  if(slen>1 )
  {
    if(s1 == "-")
    {
      sign = "-";
      ret = sign + getMoneyType(val.substring(1,slen));
     }
     else
     {
       ret = getMoneyType(val);
     }
   }
   else
   {
     ret = val;
   } 
   return  ret;
}

/*=============================================================================*
 * 콤마를 제거한 숫자형태 문자열로 반환(부호와 소수점도 없앰)
 *
 * param : val
 *
 * return : String
 *============================================================================*/
function getOnlyNumber(val)
{   
  var value = "";
  var abit;

  if (typeof val != "number" && typeof val !="string")
  {
    return "0";
  }
  if (val.length < 1)
  {
    return "0";
  }
  if (val == "NaN")
  {
    return "0";
  }
  if (val == "-Infinity")
  {
    return "0";
  }
   
  for (i=0;i<val.length;i++)
  {
    abit = parseInt(val.substring(i,i+1));
    if (('0' < abit) || ('9' > abit) )
    {
      value = value + abit;
    }

  }
  return value;
}

 

/*=============================================================================*
 * 콤마를 제거한 숫자형태 문자열로 반환(부호, 소수점 그대로)
 *
 * param : val
 *
 * return : String
 *============================================================================*/
  function getOnlyNumberDot(val)
  {   
 
   if (typeof val != "number" && typeof val !="string")
   {
    return "0";
   }
   if (val.length < 1)
   {
    return "0";
   }
   if (val == "NaN")
   {
    return "0";
   }
   if (val == "-Infinity")
   {
    return "0";
   }
 
   var value = "";
   var abit; // 소수부분
 
   var delimter = val.indexOf(".");
   var numberInteger = ""; // 정수부분
   
   if(delimter < 0) {
    numberInteger = val;
    abit ='';
   } else {
    numberInteger = val.substring(0,delimter);
    abit = val.substring(delimter+1);
   }
 
   var number="";
   var leng=numberInteger.length ;
   for(i=0 ; i<leng ; i++)
   {
    var tmp = numberInteger.substring(i,i+1);
    if(tmp != ",")
    {
     number = number+tmp;
    }
   }
   
   if(abit.length==0)
   {
    value=number;
   }
   else
   {
    value = number+"."+abit;
   }
   return value;
 
  }

 

/*=============================================================================*
 * 콤마를 제거한 부호가 있는 숫자형태 문자열로 반환
 *
 * param : val
 *
 * return : String
 *============================================================================*/
function getOnlySignNumber(val)
{
  if (val == "-") return 0;
  var price = eval!(getOnlyNumber(val));
  if (val.substring(0,1) == "-")
  {
    price *= -1;
  }
  return price;
}


/*=============================================================================*
 * EMedit 날짜 사용시 입력 체크
 *
 * param : emEditObj
 *
 * return : boolean
 *============================================================================*/
function emEditYMD(emEditObj)
{
  if(MTrim(emEditObj.Text) != "")
   {
       if(MTrim(emEditObj.Text).length != 8 && MTrim(emEditObj.Text).length > 0)
       {
         alert!('일자를 모두 입력하십시오.');
             emEditObj.SelectAll = "true";
    emEditObj.focus();
             return false;
       }  
   } 
     return;
}


/*=============================================================================*
 * 그리드에서 날짜 입력 시 유효성 체크
 *
 * param : emEditObj
 *
 * return : boolean
 *============================================================================*/
function emEditYMD_grid(sVal)
{
     sVal = MTrim(sVal);

    if (isDateYMD(sVal)) return true;
    else                 return false;
}


/*=============================================================================*
 * 조회조건 시작일과 종료일 입력 유효성 확인 - 컨트롤 이용
 *
 * param : objFrom, objTo
 *
 * return : boolean
 *============================================================================*/
function chkPeriod_Emedit(objFrom, objTo)
{
 if (!isDate(objFrom.Text))
 {
  objFrom.focus();
  return false;
 }
 else if (!isDate(objTo.Text))
 {
  objTo.focus();
  return false;
 }
 else if (objFrom.Text > objTo.Text)
 {
  alert!("마지막일이 시작일보다 작습니다.");
  objFrom.focus();
  return false;
 } 
 return true;
}

 

/*=============================================================================*
 * 앞뒤 공백을 제거한다.
 *
 * param : sVal
 *
 * return : String
 *============================================================================*/
function Trim(sVal)
{
  return(LTrim(RTrim(sVal)));
}

/*=============================================================================*
 * 앞 공백을 제거한다.
 *
 * param : sVal
 *
 * return : String
 *============================================================================*/
function LTrim(sVal)
{
  var i;
  i = 0;
  while (sVal.substring(i,i+1) == ' ')
  {
    i++;
  }
  return sVal.substring(i);
}

/*=============================================================================*
 * 뒤 공백을 제거한다.
 *
 * param : sVal
 *
 * return : String
 *============================================================================*/
function RTrim(sVal)
{
  var i = sVal.length - 1;
  while (i >= 0 && sVal.substring(i,i+1) == ' ')
  {
    i--;
  }
  return sVal.substring(0,i+1);
}


//------------------------------------------------------------------------------
// DESCRIPTION  : 공백문자 제거
// 함수명       : MTrim(공백이 있는 문자열)
// Return Value : 공백이 제거된 문자열
//------------------------------------------------------------------------------
function MTrim(sVal){
 var strOri = sVal;
 var space = " ";
  
 while (strOri.indexOf(space) != -1){
  strOri = strOri.replace(space, "");
 }

 return strOri;
}

/*=============================================================================*
 * 공백만 존재하거나 아무것도 없는지 확인한다.
 *
 * param : sVal
 *
 * return : boolean (true이면 공백이나 Empty이다)
 *============================================================================*/
function isEmpty(sVal){
  if (MTrim(sVal) == '')
  {
    return true;
  }
  return false;
}

/*=============================================================================*
 * 현재 컨트롤과 MaxLength 받아서 MaxLength 되면 다음 컨트롤로 이동
 *
 * param : objCurrent, objNext
 *
 * return :
 *============================================================================*/
function focusMove(objCurrent, objNext)
{
  if ( objCurrent.getAttribute("Maxlength") == objCurrent.value.length)
  {
    objNext.focus();
  }
}

/*=============================================================================*
 * 현재 컨트롤과 MaxLength 받아서 MaxLength 되면 다음 컨트롤로 이동(선택)
 * param : objCurrent, objNext
 * return :
 *============================================================================*/
function focusMoveSelect(objCurrent, objNext)
{
  if ( objCurrent.getAttribute("Maxlength") == objCurrent.value.length)
  {
    objNext.focus();
    objNext.select();
  }
}


/*=============================================================================*
 * 완료된 날짜값에 대해 "/" 추가
 * param : me(value)
 * return : String
 *============================================================================*/
function calOnMask(me){

 if (event.keyCode<48||event.keyCode>57){//숫자외금지
     event.returnValue=false;
 }
 if(me.length > 3 ) {
  var a1 = me.substring(0,4) + "/";
  var a2 = me.substr(4,me.length);
  var a3 = "";
  if (me.length > 5){
   a2 = me.substring(4,6) + "/";
   a3 = me.substr(6,me.length);
  }
 
  me= a1 + a2 + a3;
  
 }
 return me;
}


/*=============================================================================*
 * 날짜값 "/" 제거
 * param :  me(value)
 * return : String "/" 제거된 날짜값
 *============================================================================*/
function calOffMask(me){
 var tmp=me.split("/");
 tmp=tmp.join("");
 return tmp;
}


/*=============================================================================*
 * 날짜값 자동 "/" 붙임.(완성된 날짜값에 대해 /붙임)
 *
 * param :
 *
 * return :
 *============================================================================*/
function cal_value2(me){

  if(me.length == 8 ) {
  var a1 = me.substring(0,4) + "/";
  var a2 = me.substring(4,6) + "/";
  var a3 = me.substr(6,me.length);
  
  me= a1 + a2 + a3;
  
 }
 return me;
}


/*=============================================================================*
 * 오늘 날짜 생성 ( "/" 붙여서 리턴)
 * 
 * param :
 *
 * return : todate
 *============================================================================*/
function todate() {
 var now=new Date()
 var jyear = now.getYear();
 var month=now.getMonth() + 1;
 var jmonth = month + "";
 if (jmonth.length < 2) {
  jmonth = "0" + jmonth;
 }
 var dat=now.getDate();
 var jdate = dat + "";
 if (jdate.length < 2) {
  jdate = "0" + jdate;
 }
 
 //var day=Birdy.getDay()//요일
    var tdy = jyear+"/"+jmonth+"/"+jdate;
 return tdy; 
}

 

/*--------------------------------------------------------------------------------------------
 Spec   : 숫자입력시 3자리마다 자동으로 콤마 찍기
 Argument : string
 Return   : string
 Example  : onkeyup="comma_value(this)"
---------------------------------------------------------------------------------------------*/
function comma_value(sval)
{
    if (event.keyCode != 9)
    {
        var cur = sval.value;
        var setMinus = 0;

        if (cur.charAt(0) == "-") {
            setMinus = 1;
        }

        cur=cur.replace(/[^.0-9]/g ,"");
        cur=cur.replace(/[.]+/g ,".");

        if (setMinus == 1)
            sval.value = "-" + formatNumbertoString(cur);
        else
            sval.value = formatNumbertoString(cur);
    }
}


/*--------------------------------------------------------------------------------------------
 Spec   : 숫자입력시 3자리마다 자동으로 콤마 찍기
 Argument : string
 Return   : string
 Example  : onkeyup="comma_value(str)"
---------------------------------------------------------------------------------------------*/
function formatNumbertoString(cur)
{
    leftString = cur;
    rightString = ".";
    dotIndex = 0;
     
    for(i = 0; i < cur.length; i++){
     // 1) '.'이 처음에 입력 되었을때 앞에 0을 더해 "0."을 리턴
  // 2) "0."이외의 입력 일 때 "0"만 리턴
     if(cur.charAt(i) == "." || (cur.length > 1 && cur.charAt(0) == "0" && cur.charAt(1) != "."))
  {
      dotIndex = i;
      if(dotIndex == 0)
   {
                if   (cur.charAt(0) == ".")   leftString="0.";
                else                          leftString="";
       return leftString;
      }
      break;
     }
    }
   
     if(dotIndex != 0) //dot가 있을 경우..
    {
     leftString = cur.substr(0, dotIndex);
     rightString = cur.substr(dotIndex+1);
     rightString = rightString.replace(/\./g,"");
    }
    else //없으면..
    {
     leftString = cur;
    }

    len=leftString.length-3;
    while(len>0)
    {
        leftString=leftString.substr(0,len)+","+leftString.substr(len);
        len-=3;
    }          
   
    if(rightString != ".")
        return (leftString + "." + rightString);
    else
        return leftString;
}

// 숫자만 입력 (소수점 허용, 음수 허용)
// 사용법 : onKeyPress = onlyNum();
function onlyNum()
{
 if (event.keyCode < 45 || event.keyCode > 57 || event.keyCode == 47)
  event.returnValue = false;
}

// 숫자만 입력 (소수점 허용, 음수 불가)
// 사용법 : onKeyPress = onlyNum2();
function onlyNum2()
{
 if (event.keyCode < 46 || event.keyCode > 57 || event.keyCode == 47)
  event.returnValue = false;
}

// 숫자만 입력 (소수점 불가, 음수 허용)
// 사용법 : onKeyPress = onlyNum3();
function onlyNum3()
{
 if (event.keyCode < 45 || event.keyCode > 57 || event.keyCode == 46 || event.keyCode == 47) 
  event.returnValue = false;
}

// 숫자만 입력 (소수점 불가, 음수 불가)
// 사용법 : onKeyPress = onlyNum4();
function onlyNum4()
{
 if (event.keyCode < 48 || event.keyCode > 57)
  event.returnValue=false;
}

 

function onlyChar(sval)
{
 var sBit = '';
 str = sval.value;

 for(i=0;i<str.length;i++)
 {
  sBit = str.charAt(i);
 
  if(escape( sBit ).length <= 4)
     {
   var sAlphabet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   
   if(sAlphabet.indexOf(sBit) < 0)
      {
    alert!("영문 또는 한글만 입력해 주십시오.");    
    return false;
   }
  }
 }
 return true; 
}

 

/*=============================================================================*
 * 입력완료된 숫자값에 대하여 콤마를 찍어줄때 사용(소수점 이하 처리 안됨)
 * 콤마 형식을 사용할 경우에는 onkeyup이벤트로 사용하기 바라며,
 * 다음의 펑션을 호출할때는 comma_value(me) 펑션을 호출하기 바람.
 * param : value
 *============================================================================*/
function numOnMask(me){
 var tmpH = null; 
 if(me.charAt(0)=="-"){//음수가 들어왔을때 '-'를 빼고적용되게..
  tmpH=me.substring(0,1);
  me=me.substring(1,me.length);
 } //me.indexOf('-')
  if(me.length > 3){
   var c=0;
   var myArray=new Array();
     for(var i=me.length;i>0;i=i-3){
       myArray[c++]=me.substring(i-3,i);
     }
     myArray.reverse();
     me=myArray.join(",");
   }
  if(tmpH){
    me=tmpH+me;
   }
 return me;
}

/*=============================================================================*
 * 콤마가 들어간 숫자에서 ","를 뺀다.
 * param : value
 *============================================================================*/
function numOffMask(me){
     var tmp=me.split(",");
      tmp=tmp.join("");
     return tmp;
}

// 입력 완료된 숫자 값에 컴마를 적용하여준다(소수점 이하는 "," 안 붙음)
// return : String
function numOnMask2(me){
  var tmpH; 
 if(!isMoneyNumber4(me)) {
   if(me.charAt(0)=="-"){//음수가 들어왔을때 '-'를 빼고적용되게..
    tmpH=me.substring(0,1);
    me=me.substring(1,me.length);
   } //me.indexOf('-')
   if(me.length > 3){
    var c=0;
    var myArray=new Array();
    for(var i=me.length;i>0;i=i-3){
      myArray[c++]=me.substring(i-3,i);
    }
    myArray.reverse();
    me=myArray.join(",");
    }
    if(tmpH){
    me=tmpH+me;
    }
 }else{
   var e = me;
   e = e.split(".");
   var myStr = e[0];
   //alert!(myStr);
   if(myStr.charAt(0)=="-"){//음수가 들어왔을때 '-'를 빼고적용되게..
    tmpH=myStr.substring(0,1);
    myStr=myStr.substring(1,me.length);
   } //me.indexOf('-')
   if(myStr.length > 3){
    var c=0;
    var myArray=new Array();
    for(var i=myStr.length;i>0;i=i-3){
      myArray[c++]=myStr.substring(i-3,i);
    }
    myArray.reverse();
    myStr=myArray.join(",");
    }
    if(tmpH){
    me=tmpH+myStr+"."+e[1];
    }
    else {
    me=myStr+"."+e[1];
    }
 }

return me;
}


// 입력 완료된 숫자 값에 컴마를 적용하고 소수점 이하는 삭제한다
// return : String
function numOnMask3(me){ //단순히 값에 컴마를 적용할때 사용
 var tmpH; 
 if(isMoneyNumber3(me)) { // 양수&음수 체크 (true : 양수, false : 음수)
  var e = me;
  e = e.split(".");
  var myStr = e[0];
  if(myStr.length > 3){
   var c=0;
   var myArray=new Array();
   for(var i=myStr.length;i>0;i=i-3){
     myArray[c++]=myStr.substring(i-3,i);
   }
   myArray.reverse();
   myStr=myArray.join(",");
   }
   me = myStr;
 }else{ // 음수 일때
  var e = me;
  e = e.split(".");
  var myStr = e[0];
  if(myStr.charAt(0)=="-"){//음수가 들어왔을때 '-'를 빼고적용되게..
   tmpH=myStr.substring(0,1);
   myStr=myStr.substring(1,me.length);
  } 
  if(myStr.length > 3){
   var c=0;
   var myArray=new Array();
   for(var i=myStr.length;i>0;i=i-3){
     myArray[c++]=myStr.substring(i-3,i);
   }
   myArray.reverse();
   myStr=myArray.join(",");
   }
   if(tmpH){
   me=tmpH+myStr;
   }
   else {
   me=myStr;
   }
 }

return me;
}


/*=============================================================================*
 * 입력값을 소수점 이하 몇 자리까지 보여줄지 정한다. 
 * 소수점 이하 자리수가 입력된 값보다 작으면 0으로 채운다.
 * param : sVal 입력스트링, iSize 소수자릿수
 * return : String
 *============================================================================*/
function numOnMask4(sVal,iSize)
{
 if(isNumberDot(sVal))  // 숫자형인지 확인
 {
  var e = sVal;
  e = e.split(".");
  if (!e[1]) {   
   if (iSize == 0) {
       sVal = numOnMask(e[0]);
    return sVal;
   }
   else {
    e[1] = "0";
   }
  }
  while (e[1].length < iSize) {    // 주어진 소숫점 이하 자릿수 만큼 뒤에 "0" 추가
      e[1] = e[1] + "0";
  }
  sVal = numOnMask(e[0]) + "." + e[1].substr(0,iSize);
  return sVal;
 }
 else {
  return false;
 }
}

 

/*=============================================================================*
 * 입력값에 마스킹을 적용한다.(소수점 이하와 부호를 삭제하고 콤마추가)
 * param : sVal 입력스트링
 * return : String
 *============================================================================*/
function numOnMask5(sVal)
{
 var e = sVal;
 e = e.split(".");

 if(!isMoneyNumber3(e[0]))    // true이면 양수, false이면 음수
  e[0] = e[0].substring(1)

 return numOnMask(e[0]);
}


/*=============================================================================*
 * 입력값에 마스킹을 적용한다.(부호를 삭제하고 콤마추가. 소수점은 그대로 둠)
 * param : sVal 입력스트링
 * return : String
 *============================================================================*/
function numOnMask6(sVal)
{
 var e = sVal;
 e = e.split(".");

 if(!isMoneyNumber3(e[0]))  // isMoneyNumber3 - true이면 양수, false이면 음수
  e[0] = e[0].substring(1);

 return numOnMask(e[0]) + "." + e[1];
}

 

/*=============================================================================*
 * 숫자 외의 값이 입력되어있으면 false 리턴
 * param : sval (object)
 * return :
 *============================================================================*/
function onlyNumber(sval) {
 var strVal = sval.value

 if (strVal.length < 1) {
     return false;
 }

 strVal = numOffMask(strVal);
 var result = isNumberDot(strVal);
 if (!result) {
     //alert!("숫자만 입력 가능합니다.");
  sval.focus();
  return false;
 }
}

 

/*=============================================================================*
 * 특수문자 값이 입력되었는지 체크(특수문자가 있으면 false 리턴)
 * param : sval (object)
 * return :
 *============================================================================*/
function chkValidChar(sval) {
    var re = new RegExp("[%\']","ig");
    var retVal = re.test(sval.value);

    if (retVal == true)
    {
        alert!("검색어에 다음 문자를 사용할 수 없습니다 : \n\n              %    \' ");
        return false;
    }
    else
        return true;
}


/*=============================================================================*
 *
 * 윈도우 오픈1 (사용자 지정 위치생성)
 * param : wUrl  지정url
 * param : wTitle 지정타이틀
 * param : wTop  지정 창 높이정렬기준
 * param : wLeft 지정 창 왼쪽정렬기준
 * param : wWidth 창넓이
 * param : wHeight 창높이
 * param : wSco  스크롤바 생성유무, 1:생성 0:비생성
 *============================================================================*/
function win_open(wUrl,wTitle,wTop,wLeft,wWidth,wHeight,wSco) {
 window.open(wUrl,wTitle,"top="+wTop+",left="+wLeft+",width="+wWidth+",height="+wHeight+",scrollbars="+wSco);
}

/*=============================================================================*
 *
 * 윈도우 오픈2 (무조건 가운데 생성)
 * param : wUrl  지정url
 * param : wTitle 지정타이틀
 * param : wWidth 창넓이
 * param : wHeight 창높이
 * param : wSco  스크롤바 생성유무, 1:생성 0:비생성
 *============================================================================*/
function win_open2(wUrl,wTitle,wWidth,wHeight,wSco) {
 var top_po = (screen.availHeight/2) - (wHeight/2);
 var left_po = (screen.availWidth/2) - (wWidth/2);
 //alert!(top_po +" "+left_po+ " "+wHeight+" "+wWidth);
 window.open(wUrl,wTitle,"top="+top_po+",left="+left_po+",width="+wWidth+",height="+wHeight+",scrollbars="+wSco);
}
/*=============================================================================*
 *
 * 윈도우 오픈3 (무조건 전체 생성)
 * param : wUrl  지정url
 * param : wTitle 지정타이틀
 * param : wWidth 창넓이
 * param : wHeight 창높이
 * param : wSco  스크롤바 생성유무, 1:생성 0:비생성
 *============================================================================*/
function win_open3(wUrl,wTitle) {
 var wWidth = screen.availWidth;
 var wHeight = screen.availHeight;
 
 window.open(wUrl,wTitle,"top=0,left=0,width="+wWidth+",height="+wHeight+",scrollbars=0");
 
}


/************************************************************************************************************************
 * 고객번호 및 계좌번호
************************************************************************************************************************/

function cust_set_num(sval) {//고객번호 5자리 세팅
 var cust_val = sval.value;
 if (cust_val == "") return;

 var cust_length=cust_val.length;
 if (cust_length < 5) {
  for (var i = 0; i < (5 - cust_length); i++) {
   cust_val = "0" + cust_val;
  }
  sval.value = cust_val;
 }
}

function cust_key_num(sval,obj) {
 if (event.keyCode<48||event.keyCode>57){//숫자외금지
     event.returnValue=false;
 }
 if (sval.length == 5) {
  obj.focus();
  obj.select();
 }
}

function acnt_set_num(sval,obj) {//계좌번호 2자리 세팅
 var acnt_val = sval.value;
 var acnt_length = acnt_val.length;
 if (obj.value == "") return;
 if (acnt_val == "") acnt_length = 0;

 if (acnt_length < 2) {
  for (var i = 0; i < (2 - acnt_length); i++) {
   acnt_val = "0" + acnt_val;
  }
  sval.value = acnt_val;
 }
}

function acnt_key_num() {
 if (event.keyCode<48||event.keyCode>57){//숫자외금지
     event.returnValue=false;
 }
}

function rdo_val(sval) {
 // 이펑션은 체크박스와 옵션버튼의 활성화 비활성화에 사용
 if (sval.checked == true) {
  sval.checked = false;
 }else {
  sval.checked = true;
 }
}


function disp_err(sval) {
    ErrMsgForm.errMsg.value = sval;
    window.open("/err_msg.screen","에러메세지","top=300px,left=310px,height=300px,width=500px,resizable=0,scrollable=1");
}

function disp_err1(sval) {
    ErrMsgForm.errMsg.value = sval;
    window.open("/err_msg1.screen","에러메세지","top=300px,left=310px,height=300px,width=500px,resizable=0,scrollable=1");
}


/**
 * 두 날짜에 며칠 차이나는지 구함
 * from_val이 to_val보다 크면 -붙여서 리턴
 */
function getDayInterval(from_val,to_val) {
    var day   = 1000 * 3600 * 24; //24시간
 if(isDate(from_val)==false)
 {
  return;
 }
 if(isDate(to_val)==false)
  return;
 
 var from_date=toTimeObject(from_val);
 var to_date=toTimeObject(to_val);
 var day_interval=parseInt((to_date - from_date) / day, 10);
    //alert!(to_date+" - "+from_date+"="+day_interval);
 return day_interval;
}

 

/**
 * Time 스트링을 자바스크립트 Date 객체로 변환
 * parameter time: Time 형식의 String
 */
function toTimeObject(time) { //parseTime(time)
    var year  = time.substr(0,4);
    var month = time.substr(4,2) - 1; // 1월=0,12월=11
    var day   = time.substr(6,2);

    return new Date(year,month,day);
}


// readonly나 disabled로 막힌 경우를 제외하고 tabindex 값을 지정하여 입력박스 순서대로 이동
function tabIndexing()
{
    elements = document.all;
    for (i=0;i<elements.length ;i++)
    {
        if(elements[i].readOnly == false){
           elements[i].tabIndex = i;
        }
    }
}

 

/*=============================================================================*
 * 조회버튼 클릭시 고객번호/계좌번호 입력 여부 확인
 * param : obj1 고객번호, obj2 계좌번호, field 필드명
 * return : boolean
 *============================================================================*/
function chkCustNoAcntNo(obj1, obj2, field)
{
 if (field == null)  field = '';
    obj1.value = MTrim(obj1.value);
    obj2.value = MTrim(obj2.value);

 if (obj1.value.length == 0 && obj2.value.length == 0)
 {
        return true;
    }
    else if (obj1.value.length == 0 && obj2.value.length != 0)
 {
        alert!(field+" 번호를 입력하십시오.");
        obj1.select();
     obj1.focus();
  return false;
 }
    else if (obj1.value.length != 0 && obj2.value.length == 0)
 {
        alert!(field+" 번호를 입력하십시오.");
        obj2.select();
     obj2.focus();
  return false;
 }

 return true;
}


function win_open_BuzPwd()
{
    var return_value = window.showModalDialog("checkPwd.screen", "", "dialogHeight: 100px; dialogWidth: 306px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll:0;");
    return return_value;
}


function win_open_BuzPwdWithManagerPwd()
{
    var return_value = window.showModalDialog("COLO0106mc_00.do", "", "dialogHeight: 114px; dialogWidth: 336px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll:0;");
    return return_value;
}

// return 값 없는 경우
function submain_popup(pUrl, urlHeight, urlWidth)
{
    //parent.stopTimer();
    var returnCode = window.showModalDialog("submain_popup.screen", pUrl, "dialogHeight: "+urlHeight+"px; dialogWidth: "+urlWidth+"px; edge: Raised; center: Yes; help: No; resizable: Yes; status: No;");
    parent.startTimer();
    if(returnCode=='n')
    {
        parent.logout();
    }
    else if(returnCode=='timerlogout')
    {
        parent.timer_logout();
    }

    return;
}

// return 값이 String인 경우
function submain_popup2(pUrl, urlHeight, urlWidth)
{
    //parent.stopTimer();
    var returnCode = window.showModalDialog("submain_popup2.screen", pUrl, "dialogHeight: "+urlHeight+"px; dialogWidth: "+urlWidth+"px; edge: Raised; center: Yes; help: No; resizable: Yes; status: No;");
    //parent.startTimer();
    if(returnCode=='n')
    {
        parent.logout();
    }
    else if(returnCode=='timerlogout')
    {
        parent.timer_logout();
    }
    else if (typeof(returnCode) == "undefined")
    {
     return 'undefined';
    }
    else
    {
     return returnCode;
    }
}

// 파라미터로 window 객체 사용
function submain_popup3(pUrl, urlHeight, urlWidth)
{
    //parent.stopTimer();
    var returnCode = window.showModalDialog("submain_popup3.screen?pUrl="+pUrl, window, "dialogHeight: "+urlHeight+"px; dialogWidth: "+urlWidth+"px; edge: Raised; center: Yes; help: No; resizable: Yes; status: No;");
    //parent.startTimer();

    if (typeof(returnCode) == 'object')
    {
        return returnCode;
    }
    else
    {
        if(returnCode =='n')
        {
            parent.logout();
        }
        else if(returnCode=='timerlogout')
        {
            parent.timer_logout();
        }
        else if (typeof(returnCode) == "undefined")
        {
            return 'undefined';
        }   
        else
        {
         return returnCode;
        }
    }
}


// 파라미터로 window 객체를 사용하면서 return 값이 Object
function submain_popup4(pUrl, urlHeight, urlWidth)
{
    //parent.stopTimer();
    var returnCode = window.showModalDialog("submain_popup4.screen?pUrl="+pUrl, window, "dialogHeight: "+urlHeight+"px; dialogWidth: "+urlWidth+"px;center:Yes; help:No; resizable:Yes; status:No; scroll:Yes;");
    //parent.startTimer();

    if (typeof(returnCode) == 'object')
    {
        return returnCode;
    }
    else
    {
        if(returnCode=='n')
        {
            parent.logout();
        }
        else if(returnCode=='timerlogout')
        {
            parent.timer_logout();
        }
        else if (typeof(returnCode) == "undefined")
        {
            return 'undefined';
        }
        else
        {
            return returnCode;
        }
    }
}

// parameter로 Object를 사용
function submain_popup5(pUrl, urlHeight, urlWidth, obj)
{
    //parent.stopTimer();
    var returnCode = window.showModalDialog("submain_popup5.screen?pUrl="+pUrl, obj, "dialogHeight: "+urlHeight+"px; dialogWidth: "+urlWidth+"px; edge: Raised; center:Yes; help:No; resizable:Yes; status:No;");
    //parent.startTimer();

    if (typeof(returnCode) == 'object')
    {
        return returnCode;
    }
    else
    {
        if(returnCode=='n')
        {
            parent.logout();
        }
        else if(returnCode=='timerlogout')
        {
            parent.timer_logout();
        }
        else if (typeof(returnCode) == "undefined")
        {
            return 'undefined';
        }
        else
        {
            return returnCode;
        }
    }
}


function start_timer()
{
// if ( opener==null )
// {
//  parent.startTimer();
//  return;
// }
// else
// {
//     opener.start_timer();
//     return;
// }
}



'Javascript' 카테고리의 다른 글

common.js  (0) 2010.11.14
event.keyCode 번호표  (0) 2010.11.14
정규식  (0) 2010.11.14
Ajax Request 이해  (0) 2010.11.14
Javascript Event  (0) 2010.11.14
Posted by TIMEC
2010. 11. 14. 13:26

Regular Expression!!s은 JavaScript1.2에서 사용할 수 있는 객체입니다. 특정 문자나 문자열로 문자열을 다루는 것에 문자뿐 만이 아니고 특수 문자로 다룰 수 있고 이들을 조합하여 다룰 수 있는 조건식(pattern)을 제공하여 더 세밀한 방법으로 문자들을 검색할 수 있게 합니다. Regular Expression!!s는 Perl, PHP등의 Server Side 언어에서도 있고 비슷한 동작을 합니다. 많은 부분을 Perl에서 가져온 것입니다.

Regular Expression!!s은 문자들에게 조건을 지정하여 조건식을 만들고 이것을 이용하여 사용합니다. 조건식을 만드는 방법은 2가지가 있습니다.

var re = /abc/

var re = new RegExp("abc")

위의 2가지 식 중에서 하나를 사용할 수 있고 위의 변수 "re"가 Regular Expression!! 객체가 됩니다. 문자열 "abc"는 검색어로 사용할 pattern이 됩니다.

이 Regular Expression!!객체는 'source', 'lastIndex'의 2 개의 요소와 3개의 메소드 compile(), exec(), test()를 가지고 있습니다. (nn4에서는 요소로 'global', 'ignoreCase'의 2개가 더 있지만 Netscape 공식 문서에는 들어 있지 않습니다.)

 

 

Regular Expression!! Switch

var re = /abc/[g,i,gi]

var re = new RegExp("abc", ["g", "i", "gi"])

Regular Expression!! 사용식에 "g", "i", "gi" 로 3가지 중에서 하나의 switch를 지정한다. 지정하지 않을 수도 있다.

  • "g" : pattern에 맞는 문자들을 전부 검색한다.
  • "i" : 검색시 영어 대소문자를 구분하지 않는다.
  • "gi" : "g"와 "i"를 같이 지정한다.

 

 

Regular Expression!! 요소값

  • lastIndex : pattern에 지정한 문자가 검색된 마지막 위치. nn4에서는 switch로 "g"를 지정해야 참조할 수 있고 ie5에서는 exec() 메소드로 만든 배열 객체의 요소이다.
    var myRe= /bb/g;
    var arr = myRe.exec("abbc");

    if(document.layers) alert!!(myRe.
    lastIndex
    )
    else if(document.all) alert!!(arr.
    lastIndex
    )

    이 경우는 정수 3이 나온다.
  • source : pattern에 지정한 문자열. 스위치는 포함되지 않는다.
    alert!!(myRe.
    source
    )
    이 경우는 "bb"가 나온다.

 

 

Regular Expression!! 메소드

  • compile("pattern", "switch") : 지정한 pattern을 재지정한다. 그래서 source와 global, ignoreCase 스위치를 변경할 수 있다. 이것으로 지정식에 변화하는 pattern, switch를 적용할 수 있다.
    var myRe = /bb/g
    myRe.exec()
    myRe.
    compile
    ("cc", "i")
    alert!!(myRe.source)

    는 "cc"가 된다. 처음 source "bb"에서 다시 "cc"로 재지정하였고 스위치도 "g"에서 "i"로 바꾸었다.
  • exec("문자열") : 문자열을 검색한다. 실행후에 RegExp 객체와 검색결과를 가지고 있는 배열을 만든다.
    var myRe = /\w+bb/g
    var arr = myRe.
    exec
    ("abbc")
    alert!!(RegExp.$1)

    는 "abb"로 나온다. arr[0]도 "abb"가 나온다.
  • text("문자열") : 지정한 pattern이 문자열에 있는지 없는지를 검사한다. 있으면 true를 없으면 false를 반환한다. 특정 pattern이 있는지 없는지만 확인할 필요가 있으면 이것을 사용하는 것이 exec()보다 속도가 빠르다.
    var myRe = /\w+bb/g
    var arr = myRe.
    test
    ("abbc")
    if(arr) {
            alert!!('문자열 "abbc" 안에 pattern인 /\w+bb/가 발견됨.')
    }

 

 

Special characters in regular expression!!s

 

 

특수문자

의미

\

다음 글자가 일반적인 글자가 아니고 특수문자로 사용된다는 지정이다. 특수문자로 사용할 문자앞에 backslash(\)를 붙여준다. \w는 w가 특수문자로 사용됨을 나타낸다. \w의 의미는 모든 문자를 가리킨다.

또는 반대로 특수문자를 일반적인 문자로 지정하게 한다. \\는 backslash(\)문자를 나타낸다. \\\/는 slash(/) 문자를 나타낸다.

^

input이나 line의 시작문자. /^A/는 "Amatch"와는 맞지만 "an Amatch"와는 맞지 않는다.

$

input이나 line의 끝문자. /A$/는 "abA"와는 맞지만 "aAb"와는 맞지 않는다.

*

앞 문자가 0번 이상 있으면 맞다. 없어도 되고 여러개 있어도 된다. /ab*c/는 "abbbc"와 맞다. "ac"와도 맞다. 하지만, "ax"와는 맞지 않는다.

+

앞 문자가 1번 이상 있으면 맞다. 1개 이상 있어야 하고 여러개 있어도 된다. /ab+c/는 "abbbc"와 맞다. 하지만, "ac"와는 맞지 않는다.

?

앞 문자가 0번이나 1번은 있어야 맞다. /ab?c/는 "abc"와 맞고 "ac"와도 맞다. 하지만, "abbc"와는 맞지 않는다.

.

개행문자(\n)외에 모든 문자이면 맞다. /.c/는 "Xc", "1c"와 맞다. 하지만, "ca", "\\nc"와는 맞지 않는다. (\\n은 \n의 뜻이다. 특수문자로 사용되는 \를 문자로 표현하기 위해서 앞에 \를 붙여준다. )

(x)

문자 'x'를 검색하고 맞으면 'x'를 기억한다. /a(bc)/는 "abcd"에서 검색되고 "bc"를 기억한다. 이 기억된 것은 RegExp 객체의 $1에서 $9까지로 또는 배열 [1]에서 기억된 숫자 [n]개 까지로 호출될 수 있다.

x|y

'x'나 'y'가 있으면 맞다. /abc|xx/는 "abc ZZZ"나 "xx ZZZ"와 맞다.

{n}

앞 문자가 n개 있으면 맞다. n은 양수 정수이다. /X{2}/는 "abcXX"와 맞다. "abcXXX"와도 맞고 처음 2개의 "XX"가 검색된다.

{n,}

앞 문자가 최소한 n개 있으면 맞다. n은 양수 정수이다. /X{2,}/는 "abcXX"와 맞다. "abcXXX"와도 맞고 3개의 "XXX"가 검색된다.

{n,m}

앞 문자가 최소한 n번에서 m번까지 있다면 맞다. /a{1,3}/은 "ab", "aaab"와 맞다.

[xyz]

xyz 중에서 아무런 문자가 있어도 맞다. 이것은 [x-z]과 같은 지정이다.

[^xyz]

xyz 중에서 하나의 문자라도 없으면 맞다. 이것은 [^x-z]과 같은 지정이다.

[\b]

backspace

\b

공백같은 것으로 단어의 경계되는 부분에 있는 문자이다. /\bX/는 "Xxx"와 맞다. /X\b/는 "xxX"와 맞다.

\B

\b와 반대이다. 단어 경계에 있지 않은 문자만 맞다. /X\Bz/는 "XXz Xzz"에서 두번째의 "Xz"가 검색된다.

\cX

control-X 문자와 맞다. /\cM/은 control-M 문자이다.

\d

숫자는 맞다. [0-9]와 같은 지정이다. /\d/는 "hi5"에서 "5"를 검색한다.

\D

숫자가 아닌 것은 맞다. [^0-9]와 같은 지정이다. /\D/는 "hi5"에서 "h"를 검색한다.

\f

form-feed(\f) 문자와 맞다.

\n

linefeed(\n) 문자와 맞다.

\r

carriage return(\c) 문자와 맞다.

\s

space, tab, form feed, line feed를 가지고 있는 white space 문자와 맞다.[ \f\n\r\t\v]와 같은 지정이다. /\s\w*/는 "abc Xz"에서 "Xz"를 검색한다.

\S

white space 문자가 아닌 하나의 문자이다. [^ \f\n\r\t\v]와 같은 지정이다. /\S\w*/는 "abc Xz"에서 "abc"를 검색한다.

\t

tab 문자

\v

vertical tab 문자

\w

underscore(_)문자를 포함하는 알파벳과 숫자 0에서 9까지의 문자. [A-Za-z0-9_]와 같은 지정이다.

\W

\w의 반대이다. [^A-Za-z0-9_]와 같은 지정이다. /\W/는 "50%"에서 "%"를 검색한다.

\n

n은 양수 정수이다. ()로 묵은 것을 지정한다. \1은 RegExp.$1, \2는 RegExp.$2의 값을 사용한다. /ab(c)de\1/은 "abcdec"와 맞다.

\o숫자, \x숫자

escape문자로 ASCII codes 값을 넣을 수 있게한다. 8진, 16진 10진수를 넣을 수 있다.

 

 

 

RegExp 객체

 

 RegExp 객체는 Regular Expression!!객체의 메소드 exec(), test()와 String 메소드인 match(), replace() 메소드의 실행 후에 생기는 객체입니다. 이 객체는 요소는 있지만 메소드는 없습니다.

var myRe = /b(b)/g
var arr = myRe.exec("abbc")

위에서 myRe가 regular expression!! 객체이고 arr은 exec()의 결과 값을 가지고 있는 배열입니다. RegExp 객체는 자동으로 만들어 집니다. exec()를 실행한 후 만들어 집니다. 그래서 아무데서나 사용할 수 있습니다. 아래는 위의 구문을 사용하여 나오는 RegExp 객체의 요소값입니다.

 

nn4 RegExp 요소값

ie4, ie5 RegExp 요소값

input =
multiline = false
lastMatch = bb
lastParen = b
leftContext = a
rightContext = c
$1 = b
$2 =
$3 =
$4 =
$5 =
$6 =
$7 =
$8 =
$9 =

index = 1
input = abbc
lastIndex = 3
$1 = b
$2 =
$3 =
$4 =
$5 =
$6 =
$7 =
$8 =
$9 =

위의 각 요소의 값이 RegExp 객체의 값입니다. 브라우저에 따라서 나오는 결과값이 서로 다릅니다. index는 검색된 문자열이 시작하는 위치이고 lastIndex는 검색된 문자열의 다음의 글자 위치입니다. lastMatch는 검색된 문자열, lastParen은 ()로 기억한 마지막 값, leftContext은 검색된 문자열의 왼쪽의 문자, rightContext은 검색된 문자열의 오른쪽 문자입니다.

변수로 지정한 nn의 input 값이 나오지 않는데 이벤트로 작동시키면 나옵니다. 사용할 수 있는 객체는 TEXT, TEXTAREA, SELECT, LINK입니다. multiline은 TEXTAREA, LINK로 동작 시키면 'true'로 지정됩니다.

<script>
function reg() {
  var myRe = /b(b)/g;
  myRe.exec()
 
  alert!!(RegExp.input)
}
</script>
<A href="#" onClick="reg()">abbc</A>

위의 구문에서 nn4에서 "abbc"링크를 누르면 abbc를 보여줍니다. nn4에서는 직접 값을 보내줄 필요가 없습니다. 폼의 내용은 value가 가고 링크는 링크의 내용 글자가 자동으로 보내집니다. 아래는 이와 같은 동작을 하는 ie용 구문입니다.

<script>
function reg(inp) {
  var myRe = /b(b)/g;
  myRe.exec(inp)
 
  alert!!(RegExp.input)
}
</script>
<A href="#" onClick="reg(this.innerText)">abbc</A>

로 직접 링크의 내용 글자를 보내주어야 합니다.

그리고 $1에서 $9의 값은 /b(b)/g 의 괄호를 지정한 문자열을 저장하는 것입니다. 즉, (b)입니다. 검색된 문자열 중에서 "b"를 기억합니다. $1은 첫번째로 검색된 것이고 $2는 두번째, $9는 아홉번째 검색된 문자를 저장합니다. 9개가 저장할 수 있는 최대값입니다.

 

 

배열 값

var myRe = /b(b)/g
var arr = myRe.exec("abbc")

아래는 위의 구문을 사용하여 자동으로 만들어지는 배열 객체 "arr"의 값입니다.

 

nn4 배열 요소값

ie4, ie5 배열 요소값

0 = bb
1 = b
index = 1
input = abbc

input = abbc
index = 1
lastIndex = 3
0 = bb
1 = b

input는 검색했는 문자열이고 0은 최종 검색된 문자열입니다. 즉, arr[0]입니다. 1 = b는 $1과 같은 값입니다. RegExp의 요소인 $1에서 $9까지 9개의 값을 저장할 수 있지만 배열값은 갯수에 상관없습니다.

 

$ 사용하기

 

<SCRIPT LANGUAGE="JavaScript1.2">
function goReg(X) {
   var re = /(\d+)/;
   if( re.test(X) )
     alert!!("당신의 나이는 " + RegExp.$1 + " 입니다.");
   else alert!!("나이는 숫자만 입력하세요..")
}
</SCRIPT>
        나이를 입력하세요..
<FORM>
<INPUT TYPE="TEXT" VALUE="" onChange="goReg(this.value)">
</FORM>

 

위의 폼에 나이를 입력하고 다른 곳을 누르면 입력한 나이를 보여줍니다. 숫자가 아닌 문자를 입력하면 잘못 입력했다는 안내말을 보여줍니다.

 

 

 

RegExp 사용하기 

 문자열을 다루는 String 메소드와 함께 문자열을 다루는 방법이 더 강력합니다. Pattern을 만들어 사용할 수도 있고 더 쉽고 빠른 속도로 문자들을 다룰 수 있게 합니다.

 

1. 숫자인지 확인하기

function verifyDigit(input) {
        if( input.search(/\D/) != -1 ) {
                alert!!("숫자만 입력하세요..!!")
                input = input.replace(/\D/g, "")
        }
        return input
}

input로 보내온 값 중에서 0에서 9사이의 숫자가 아닌 모든 문자를 보내왔을 때, 경고 창을 보여주고 그 문자를 없엔다.

 

2. 문자열 바꾸기

아마 Regular Expression!!의 사용함의 가장 적절한 곳이 문자열의 교체일것 입니다. 아래는 간단하게 문자열을 다른 문자열로 바꿀 수 있게 합니다. String 함수를 사용하는 것보다 훨씬 간단합니다.

var xx = "안녕하세요.. 만나서 반갑습니다.. 안녕하세요.. 만나서 반갑습니다.. "
xx = xx.replace(/만나서/g, "보아서")

alert!!(xx)

는 "안녕하세요.. 보아서 반갑습니다.. 안녕하세요.. 보아서 반갑습니다.. "로 나옵니다. "만나서"를 "보아서"로 바꿉니다. /만나서/g의 g 스위치는 문자열 중에서 2번 이상 같은 것이 있으면 전부 다 바꾸라는 지정입니다.

 

 

펌 : http://user.chollian.net/~spacekan/source/source.htm 



'Javascript' 카테고리의 다른 글

event.keyCode 번호표  (0) 2010.11.14
유용한 스크립트  (0) 2010.11.14
Ajax Request 이해  (0) 2010.11.14
Javascript Event  (0) 2010.11.14
common.js 내용  (0) 2010.11.14
Posted by TIMEC
2010. 11. 14. 13:25

new Ajax.Request('A:페이지', {

  1. asynchronous: false,

  2. requestHeaders: {

   Accept: 'application/json'

  },

  3. parameters: B:'Form'.serialize(true),

  4. onFailure: function(transport){

   alert!(transport.responseText);

  },

  5. onSuccess: function(transport){

   var json = transport.responseText.eval!JSON();

   C:'실행'

  }

 });

 

 

A:페이지 : Request를 받을 페이지 설정

B:Form : 파라메터설정

              form.serialize(true) = form에 있는 모든 파라메터를 받는다.

C:실행 : 받은 파라메터들을 처리하는 부분

 

1. asynchronous: false : false는 비동기화, true는 사용안해봤음-ㅅ-;;

2. requestHeaders: { Accept: 'application/json' }

    - 여긴 모르겠다...;;

3. parameters: B:'Form'.serialize(true)

    - 선언한 파라메터를 넣어주는 것. 없으면 안쓰면 OK!

4. onFailure: function(transport){ alert!(transport.responseText); }

    - 실행 실패시 transport.responseText 을 띄워준다.

      말그대로 실행 실패 메시지를 날려준다.

5. onSuccess: function(transport){ var json = transport.responseText.eval!JSON(); C:'실행' }

    - 실행 성공시 실행하는 부분

    - var json = transport.responseText.eval!JSON();

      성공시 받아온 데이터(Object) 를 저장시켜주는 부분.

 

- 파라메터 선언방법

var param = { result1: result2 };

    - result1 : 저장할 파라메터 이름

    - result2 : 저장시킬 변수 이름

 

-----------------------------------------------------

 

--------------Java부분------------------------------

@RequestMapping(A:페이지)

 public String 이름(HttpServletRequest request, HttpServletResponse response,

   1. @RequestParam(value="result1", required=false) String result2

   )

    throws ServletException, IOException, Exception{

  

  B:JSONObject outter= new JSONObject();

  

  try {

2. 실행부1

  }catch(Exception ex) {

3. 실행부2

  }

  

  response.setContentType("application/x-json;  charset=UTF-8");

  PrintWriter pw = response.getWriter();

  pw.print(outter);

  pw.flush();

  

  return null;

 }

A:페이지 : 스크립트부분의 페이지를 지정하는부분(페이지 자체를 지정할 수도 있다)

B:JSONObject outter= new JSONObject();

              - JSON 선언부(이녀석안쓰면 반환을 못시켜~~)

1. @RequestParam(value="result1", required=false) String result2

   - Requst의 파라메터를 변수로 만드는 부분

    - result1은 스크립트에서 날린 변수

    - result2는 자바에서 쓸 변수

2. 실행부1 - 무조껀 돌리는거다!!

3. 실행부2 - 실행부1에서 오류나면 돌아가는거다!!

나머지 : 반환시켜줄때 사용...

            - return 은 null이다.

-----------------------------------------------------

 

펌) http://whitesbillows.tistory.com/archive/200810



'Javascript' 카테고리의 다른 글

event.keyCode 번호표  (0) 2010.11.14
유용한 스크립트  (0) 2010.11.14
정규식  (0) 2010.11.14
Javascript Event  (0) 2010.11.14
common.js 내용  (0) 2010.11.14
Posted by TIMEC
2010. 11. 14. 13:24

이벤트

 

이벤트와 이벤트 핸들러
웹문서를 읽어들일 때라든가, 다른 홈페이지로 이동할 때라든지, 또는 버튼이나 링크위에 마우스를 클릭하거나 위치시킨다던지 하는 이러한 것들이 바로 이벤트이다. 이 파트에서는 넷스케이프 4.0 버전에서 지원하는 자바스크립트 1.2를 중심으로 설명하려한다.


우선 간단하게 이벤트와 이벤트 핸들러의 정의를 확인하자. 이벤트란 사용자가 브라우저 윈도우상에서 버튼을 클릭하거나, 마우스를 움직이거나, 또는 키보드의 키를 누르는 등의 자바스크립트가 인식할 수 있는 행위를 말한다. 자바스크립트가 이러한 이벤트를 인식했을 때 그에 대한 반응으로써 나타나는 것이 이벤트 핸들러이다. 예를 들어 버튼을 클릭했을 때 팝업윈도우가 나타난다면 버튼이 눌려진것은 이벤트이고 팝업윈도우를 띄우는 행위는 이벤트 핸들러이다. 이벤트 핸들러를 쉽게 함수나 메소드라고 생각하면 된다. 그렇다면 자바스크립트가 인식할 수 있는 이벤트에는 과연 어떠한 종류가 있는지를 알아보자.

    

click

폼과 같은 입력양식이나 버튼, 링크를 클릭했을 때 발생하는 이벤트

dbclick

폼과 같은 입력양식이나 버튼, 링크를 더블클릭했을 때 발생하는 이벤트

mouseover

링크 위로 마우스 포인터가 위치했을 때

mouseout

마우스 포인터가 링크 밖으로 벗어났을 때

mousedown

마우스버튼을 눌렀을 때

mouseup

마우스버튼을 눌렀다 놓았을 때

mousemove

마우스를 움직일 때

keypress

키보드의 키를 눌렀을 때

keyup

키보드의 키를 눌렀다 놓았을 때

load

웹문서가 읽혀졌을 때

unload

브라우저에서 웹문서가 사라질 때


이 이외에도 몇가지의 이벤트가 더 있지만 여기서는 자세하게 언급하지는 않겠다. 이제 이러한 이벤트를 가지고 몇가지의 예제를 보자. 우선 resize 이벤트에 대한 예제를 보자. 다음의 버튼을 클릭하면 새로운 윈도우가 뜰 것이다. 이때 생성되는 이 윈도우의 크기를 변화시키면 자바스크립트가 이를 인식해 인도우의 크기가 변화됐다는 팝업윈도우를 띄울 것이다. 예제를 실행시켜보자.

resize.html

<html>

<head>

     <script language="JavaScript">

     <!--       

          window.onResize = message;     

          function message() {

                        alert!("윈도우의 크기가 바뀌는 이벤트가 발생했습니다!");

          }

     // end of script -->

     </script>

</head>

<body>   

      윈도우의 크기를 바꾸어보세요!

</body>

</html>


자, 여기서 아래의 코드를 보자.


        window.onresize = message;


이것은 등호의 왼쪽에서 지정한 이벤트가 발생했을 때 오른쪽에 지정한 이벤트핸들러를 처리하라는 의미이다. 윈도우의 크기가 바뀌었을 때 발생하는 이벤트는 resize이벤트이다. 이 이벤트에 대한 이벤트핸들러를 나타낼 때에는 앞에 on을 덧붙인다. 그래서 resize 이벤트가 발생했을 때 자바스크립트는 이를 감지하고 이벤트핸들러로 지정한 함수 message()를 호출하게 된다. 그래서 함수 message()의 내용에 따라 팝업윈도우가 뜨는 것이다. 여기서 한가지 주의할 것은 이벤트핸들러를 나타낼 때에는 비록 함수를 호출하는 것이지만 ()를 적어서는 안된다. 만일 ()를 함께 적으면 일반 함수호출로 인식되어버리기 때문이다.


이러한 표현방법이 낯설수도 있다. 하지만 지금까지 접했던 이벤트 처리방법의 형식을 기억해보자.  예를 들어 입력양식 내의 버튼을 눌렀을 때 버튼이 눌렸다는 팝업윈도우를 띄우는 경우이다. 코드는 아래와 같을 것이다.

        <form>

        <input type="button" name="myBtn" value="버튼 클릭이벤트 예제"

        onClick="alert!('버튼을 누르는 이벤트가 발생하였습니다!')">

        </form>


이와 같은 코드를 앞에서와 같은 이벤트핸들러를 지정해서 써보면 다음과 같다.


        <form>

        <input type="button" name="myBtn"

                value="버튼 클릭이벤트 예제">

        </form>

        

        ...

        

        <script language="JavaScript">

        <!--

        document.forms[0].myBtn.onClick = message;

                

        function message() {

                alert!('버튼을 누르는 이벤트가 발생하였습니다!');

        }

        // end of script -->

        </script>


어떤가? 아마도 여러분은 두 번째 대안이 더 복잡하게 보일 것이다. 그렇다면 왜 resize 예제에서는 이렇게 복잡해 보이는 방법을 사용했을까? 자, 이벤트핸들러는 첫 번째 방법처럼 이벤트 핸들러를 사용하고자 하는 곳에서 HTML 태그의 한속성으로도 지정될 수 있다. 그리고 그때 속성의이름은 해당 이벤트 이름 앞에 on을 붙이면 된다. 그래서 첫 번째에서는 <input> 태그내의 'onClick'속성에서 호출할 함수를 지정하였다. 그러나 맨 처음 resize 예제의 이벤트객체인 윈도우 객체는 태그 내에서 쓰일 수가 없다. 그렇기 때문에 조금은 복잡해 보이는 방법을 사용해야 하는 것이다.


이벤트 객체


이벤트 객체는 넷스케이프 4.0 발표와 함께 제공되기 시작한 자바스크립트 객체이다. 이벤트가 발생할 때마다 이 이벤트객체가 이벤트핸들러에 전달된다.

오른쪽의 이미지 상에 마우스를 놓고 클릭해보자.  그러면 마우스이벤트가 발생한 위치의 좌표를 나타내는 팝업윈도우가 나타날 것이다.

이 예제는 <ilayer> 태그를 사용하므로 넷스케이프 4.0 이상에서만 실행가능하다.


        <ilayer>

        <layer>

        <a href="javascript://" onClick="if (browserOK)

                alert!('x 좌표: ' + event.x + '  y 좌표: ' + event.y);

                return false;">

        <img src="davinci.jpg" width=209 height=264 border=0></a>

        </layer>

        </ilayer>


여기서는 <a> 태그내에 onClick 이벤트핸들러를 사용하고 있다. 여기서는 event.x 와 event.y 라는 새로운 이벤트 객체를 사용했는데 이 객체는 해당이벤트가 발생한 위치에서의 좌표를 가지고 있다.

이때 좌표는 브라우저 윈도우를 기준으로 하지 않고 레이어를 기준으로 한다. 그리고 이벤트핸들러를 정의할 때에는 리턴값에 주의해야 한다. 즉, 위의 경우와 달리 true를 리턴하게 되면 사용자가 레이어상에서 클릭했을 때 링크되어 있는 문서로 이동하게 된다. 그러나 false를 리턴하게 되면 링크에 연결되어 있는 문서가 나타나지 않고 이벤트가 여기에서 끝나게 된다. 위의 예제에서는 좌표를 얻는 것이 목적이므로 false를 반환하였다.


이벤트객체로는 다음과 같은 것들이 있다.


    

속 성

내    용

data

DragDrop 이벤트로 선택된 객체의 URL 주소

layerX

이벤트가 발생한 위치의 x 좌표. 레이어를 기준으로 한다.

layerY

이벤트가 발생한 위치의 y 좌표. 레이어를 기준으로 한다.

pageX

이벤트가 발생한 위치의 x 좌표. 페이지을 기준으로 한다.

pageY

이벤트가 발생한 위치의 y 좌표. 페이지을 기준으로 한다.

screenX

이벤트가 발생한 위치의 x 좌표. 화면을 기준으로 한다.

screenY

이벤트가 발생한 위치의 y 좌표. 화면을 기준으로 한다.

which

마우스버튼의 종류, 또는 입력키의 ASCII-값

modifiers

마우스와 키 이벤트 발생시 함께 눌려진 modifier 키

예) ALT_MASK, CONTROL_MASK, META_MASK, SHIFT_MASK

target

이벤트가 전달될 객체를 나타내는 문자열

type

이벤트의 종류



이벤트 잡아내기


자바스크립트 1.2 부터는 웹페이지상에서 발생하는 이벤트를 가로챌 수 있게 되었다. 예를들어 지금까지는 사용자가 버튼을 클릭하게 되면 이 버튼의 onClick 이벤트 핸들러가 호출이 된다. 그러나 이제 자바스크립트를 이용하면 이벤트가 버튼과 같은 대상객체에 의해 처리되기전에 이 이벤트를 가로챌 수 가 있게 되었다.

이를 이용하면 일정조건이 만족되지 않은 상태에서 버튼이나 링크가 클릭되지 못하게 한다든가, 키가 객체에 입력되지 못하게 한다든가 하는 등의 작업을 수행할 수 가 있다. 다음의 예제를 보며 이를 확인하자.

 event_capture.html

<html>

     <script language="JavaScript">

     <!--

          window.captureEvents(Event.CLICK);               

          window.onclick = message;

          function message(e) {

                        alert!("연결되어 있는 문서로 넘어가기전에 이벤트를 잡았습니다!");

                        return routeEvent(e);

          }            

     // end of script -->

    </script>             

<body>

<form>

        <a href="test.html" onClick="alert!('연결문서로 넘어갑니다')">

         이 링크를 클릭하세요!</a>

</form>

</body>

</html>


자바스크립트 1.2에서 이벤트를 잡아내는 기능을 구현하기 위해 4가지의 메소드를 알아야 한다.

  

captureEvents

웹페이지에서 잡아낼 이벤트를 지정한다.

releaseEvents

captureEvents로 잡아낸 이벤트를 해제한다.

routeEvent

잡아낸 이벤트를 처리할 이벤트 핸들러가 있으면 전달하여 처리한다.

handleEvent

이벤트를 특정객체의 이벤트 핸들러로 전달한다.


captureEvents(Event.CLICK)와 같이 지정하면 웹페이지상에서 마우스를 클릭했을 때 그 이벤트에 대한 이벤트핸들러가 호출되기 전에 해당 이벤트를 가로챈다. 하나뿐 아니라 여러개의 이벤트를 한꺼번에 잡아낼 수 있는데 이대에는 '|' 를 사용하여 구분한다. 다음과 같다. captureEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP)와 같이하면 마우스를 누르거나 클릭하거나 눌렀다 떼었을 때의 각각의 이벤트 모두를 검사하여 해당 이벤트가 발생할 때 이를 가로챈다.


한편 captureEvents로 감시하고 있는 이벤트를 더이상 감시하여 가로챌 필요가 없을 경우 이를 해제하는 역할을 하는 것이 releaseEvents이다. releaseEvents(Event.CLICK)라고 하면 그 이후로는 더이상 마우스 클릭이벤트가 발생해도 이벤트를 가로채지 않는다.


routeEvent는 현재 발생한 이벤트를 가로채어 작업을 수행한후 원래 이 이벤트를 처리하기 위해 지정되어 있는 이벤트핸들러가 있을 경우 이쪽으로 이벤트를 전달하는 역할을 한다.

handleEvent는 특정한 객체의 이벤트핸들러에게 이벤트를 전달하는데 사용한다. 예를 들어 버튼 1을 클릭했을 때 이 버튼 1의 클릭과 연결되어 있던 이벤트핸들러가 호출되지 않고 버튼 2와 연결되어 있던 이벤트핸들러를 호출할 수 가 있는 것이다.


자, 이제 위의 소스코드를 살펴보자. 먼저 웹문서상에는


        <a href="test.html" onClick="alert!('연결문서로 넘어갑니다')">

                이 링크를 클릭하세요!</a>

        

위 코드와 같이 링크가 하나 있고 이 링크를 클릭하면 이 클릭이벤트에 대한 이벤트핸들러가 호출되어 '연결문서로 넘어갑니다'라는 팝업윈도우가 뜨고나서 연결문서인 'test.html'로 넘어가게 된다. 이벤트 가로채기가 없을 경우에는 이렇게 진행이 될 것이다. 그러나 소스를 보면 아래와 같은 코드가 있다.


        window.captureEvents(Event.CLICK);


이 코드가 있으면 웹문서상에서 사용자가 마우스를 클릭했을 때 onClick 속성에서 지정한 이벤트 핸들러로 넘어가기 전에 이 이벤트를 가로채게 된다.


        window.onclick = message;

                

        function message(e) {

                alert!("연결되어 있는 문서로 넘어가기전에

                        이벤트를 잡았습니다!");

                return routeEvent(e);

        }


앞에서 배운것처럼 위의 코드는 onclick이벤트가 발생했을 때 해당 이벤트핸들러인 message(e) 함수를 호출하여 팝업윈도우를 띄우게 된다. 그리고 나서 'routeEvent(e)'를 호출하여 원래 링크와 연결된 이벤트핸들러를 실행하게 된다. 따라서 이벤트 가로채기가 있을 때의 실행순서는 '연결되어 있는 문서로 넘어가기 전에 이벤트를 잡았습니다!' 라는 팝업윈도우가 뜨고 나서 '연결문서로 넘어갑니다!' 라는 팝업윈도우가 뜬다. 그리고 나서 링크로 연결되어 있던 문서로 이동을 하게 된다.

handle_event.html

<html>

        <script language="JavaScript">

        <!--

        window.captureEvents(Event.CLICK);

        

        window.onclick = message;

        

        function message(e) {

                alert!('문서에서 이벤트를 가로채었습니다!');

                return document.links[1].handleEvent(e);

        }

        // end of script -->

        </script>

<body>

<a href="test.html" onClick="alert!('첫번째 링크를 클릭했습니다.')"> 첫번째 링크</a> <p>

<a href="test.html" onClick="alert!('두번째 링크를 클릭했습니다.')"> 두번째 링크</a> <p>

</body>

</html>


실행결과 '첫번째 링크'를 클릭했음에도 이벤트핸들러는 두번째 링크에서 지정하고 있는 함수 alert!('두번째 링크를 클릭했습니다.')를 호출하는 것을 알 수 있다.


        return document.links[1].handleEvent(e);


위의 부분에서 잡아낸 이벤트를 links[1] 즉, 두번째 링크객체의 이벤트 핸들러로 전달함으로써 어떤 링크를 클릭하던지 사용자는 '두번째 링크를 클릭했습니다'라는 팝업윈도우를 보게 되는 것이다.


이 파트에서 키보드를 눌렀을 때 어떠한 키가 눌렸는지를 나타내는 팝업윈도우가 뜨는것을 경험했을 것이다. 앞에서 이야기 한 내용을 이해한다면 전혀 어렵지 않게 구현할 수 있다.


        <html>

        <script language="JavaScript">

        

                // 키가 눌려졌을 때의 이벤트를 감시하여 가로챈다.

                window.captureEvents(Event.KEYPRESS);

                

                // 이벤트가 잡혔을 때 먼저 pressed() 함수를 호출한다.

                window.onkeypress= pressed;

        

                function pressed(e) {

                        alert!("지금 누른 키의 아스키코드는 : "

                                + e.which);

                }

        

                </script>

        </html> 


'Javascript' 카테고리의 다른 글

event.keyCode 번호표  (0) 2010.11.14
유용한 스크립트  (0) 2010.11.14
정규식  (0) 2010.11.14
Ajax Request 이해  (0) 2010.11.14
common.js 내용  (0) 2010.11.14
Posted by TIMEC
2010. 11. 14. 13:24
출저 - http://blog.daum.net/turnnig-pointer/16498260


/**

 * 입력값이  null 인지 체크한다

 */

function isNull(input){

       if (input.value == null || input.value == ""){

             return true;

       }else{

             return false;

       }

}

/**

 * 입력값이 스페이스 이외의 의미있는 값이 있는지 체크한다

 * if (isEmpty(form.keyword)){

 *       alert!('값을 입력하여주세요');

 * }

 */

function isEmpty(input){

       if (input.value == null || input.value.replace(/ /gi,"") == ""){

             return true;

       }else{

             return false;

       }

}

/**

 * 입력값에 특정 문자가 있는지 체크하는 로직이며

 * 특정문자를 허용하고 싶지 않을때 사용할수도 있다

 * if (containsChars(form.name, "!,*&^%$#@~;")){

 *       alert!("특수문자를 사용할수 없습니다");

 * }

 */

function containsChars(input, chars){

       for (var i=0; i < input.value.length; i++){

             if (chars.indexOf(input.value.charAt(i)) != -1){

                    return true;

             }

       }

       return false;

}

/**

 * 입력값이 특정 문자만으로 되어있는지 체크하며

 * 특정문자만을 허용하려 할때 사용한다.

 * if (containsChars(form.name, "ABO")){

 *    alert!("혈액형 필드에는 A,B,O 문자만 사용할수 있습니다.");

 * }

 */

function containsCharsOnly(input, chars){

       for (var i=0; i < input.value.length; i++){

             if (chars.indexOf(input.value.charAt(i)) == -1){

                    return false;

             }

       }

       return true;

}

/**

 * 입력값이 알파벳인지 체크

 * 아래 isAlphabet() 부터 isNumComma()까지의 메소드가 자주 쓰이는 경우에는

 * var chars 변수를 global 변수로 선언하고 사용하도록 한다.

 * var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

 * var lowercase = "abcdefghijklmnopqrstuvwxyz";

 * var number = "0123456789";

 * function isAlphaNum(input){

 *       var chars = uppercase + lowercase + number;

 *    return containsCharsOnly(input, chars);

 * }

 */

function isAlphabet(input){

       var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

       return containsCharsOnly(input, chars);

}

/**

 * 입력값이 알파벳 대문자인지 체크한다

 */

 function isUpperCase(input){

       var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

       return containsCharsOnly(input, chars);

 }

/**

 * 입력값이 알파벳 소문자인지 체크한다

 */

function isLowerCase(input){

       var chars = "abcdefghijklmnopqrstuvwxyz";

       return containsCharsOnly(input, chars);

}

/**

 * 입력값이 숫자만 있는지 체크한다.

 */

function isNumer(input){

       var chars = "0123456789";

       return containsCharsOnly(input, chars);

}

/**

 * 입려값이 알파벳, 숫자로 되어있는지 체크한다

 */

function isAlphaNum(input){

       var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

       return containsCharsOnly(input, chars);

}

/**

 * 입력값이 숫자, 대시"-" 되어있는지 체크한다

 * 전화번호나 우편번호, 계좌번호에 -  체크할때 유용하다

 */

function isNumDash(input){

       var chars = "-0123456789";

       return containsCharsOnly(input, chars);

}

/**

 * 입력값이 숫자, 콤마',' 되어있는지 체크한다

 */

function isNumComma(input){

       var chars = ",0123456789";

       return containsCharsOnly(input, chars);

}

/**

 * 입력값이 사용자가 정의한 포맷 형식인지 체크

 * 자세한 format 형식은 자바스크립트의 'reqular expression!' 참고한다

 */

function isValidFormat(input, format){

       if (input.value.search(format) != -1){

             return true; // 올바른 포멧형식

       }     

       return false;

}

/**

 * 입력값이 이메일 형식인지 체크한다

 * if (!isValidEmail(form.email)){

 *       alert!("올바른 이메일 주소가 아닙니다");

 * }

 */

function isValidEmail(input){

       var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;

       return isValidFormat(input, format);

}

/**

 * 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크한다

 */

function isValidPhone(input){

       var format = /^(\d+)-(\d+)-(\d+)$/;

       return isValidFormat(input, format);

}

/**

 * 입력값의 바이트 길이를 리턴한다.

 * if (getByteLength(form.title) > 100){

 *    alert!("제목은 한글 50 (영문 100) 이상 입력할수 없습니다");

 * }

 */

function getByteLength(input){

       var byteLength = 0;

       for (var inx = 0; inx < input.value.charAt(inx); inx++)     {

             var oneChar = escape(input.value.charAt(inx));

             if (oneChar.length == 1){

                    byteLength++;

             }else if (oneChar.indexOf("%u") != -1){

                    byteLength += 2;

             }else if (oneChar.indexOf("%") != -1){

                    byteLength += oneChar.length / 3;

             }

       }

       return byteLength;

}

/**

 * 입력값에서 콤마를 없앤다

 */

function removeComma(input){

       return input.value.replace(/,/gi,"");

}

/**

 * 선택된 라디오버튼이 있는지 체크한다

 */

function hasCheckedRadio(input){

       if (input.length > 1){

             for (var inx = 0; inx < input.length; inx++){

                    if (input[inx].checked) return true;

             }

       }else{

             if (input.checked) return true;

       }

       return false;

}

/**

 * 선택된 체크박스가 있는지 체크

 */

function hasCheckedBox(input){

       return hasCheckedRadio(input);

}

'Javascript' 카테고리의 다른 글

event.keyCode 번호표  (0) 2010.11.14
유용한 스크립트  (0) 2010.11.14
정규식  (0) 2010.11.14
Ajax Request 이해  (0) 2010.11.14
Javascript Event  (0) 2010.11.14
Posted by TIMEC
2010. 9. 3. 20:36
1. 모든 짝수 번째 <p> 엘리먼트를 선택
$("p:even");

2. 모든 테이블에서 첫째 행을 선택
$("tr:nth-child(1)");

3. <body>의 바로 아래 자식인 <div> 엘리먼트를 선택
$("body > div");

4. PDF파일의 링크를 선택
$("a[href$=pdf]");

5. <body>의 바로 아래 자식이면서 링크를 포함하는 <div> 엘리먼트를 선택
$("body > div:has(a)")
Posted by TIMEC