레이블이 자바스크립트인 게시물을 표시합니다. 모든 게시물 표시
레이블이 자바스크립트인 게시물을 표시합니다. 모든 게시물 표시

2010년 3월 17일 수요일

[자바스크립트] 자바스크립트 이벤트 처리

⑴ 이벤트

    ① 이벤트의 역할

        사용자가 무슨 일을 했는지, 또는 페이지가 언제 로드 되었는지와 같은 정보를 제공해주는 것


    ② 이벤트와 객체의 관련성

        동작 중인 브라우저에 구현된 DOM에 가장 큰 영향을 받는 것으로 객체와 가장 밀접한 관계를 가지고 있다.


    ③ 이벤트의 기본 처리 방식

        (X)HTML 객체 태그나 자바스크립트 코드 블록 또는 파일 내에서 이루어진다.


    ④ w3c는 이벤트 개념

        ㉠ 사용자 인터페이스 (마우스 , 키보드)

        ㉡ 논리(처리 결과)

        ㉢ 변경(문서를 수정하는 일)


    ⑤ 이벤트 관련 객체
    

사용자 삽입 이미지


⑵ DOM  레벨 0의 이벤트 핸들러

    - 최초의 이벤트 시스템은 Events 또는 DOM 레벨 0라고 불린다.

    - DOM 레벨 0 이벤트

       현재의 모질라 / 파이어폭스에 해당하는 구 넷스케이프와 IE로 나눈다.

    - 객체 이벤트에 이벤트 핸들러를 통해서 새로운 기능이나 개선된 기능을 추가하는 방식      

    - 이벤트 핸들러

       객체 프로퍼티 중 하나로 구문은 onevent

    - 이벤트 핸들러의 이름은 'on'으로 시작하며 그 뒤에 이벤트명(load,  click 등)이 붙는다.           

    - 객체에 직접 이벤트 핸들러를 추가하는 방법              

       <body onload = 'var i = 23 ; i  *=3 ; alert(i);'> // 이벤트 핸들러 이름을 객체 태그의 속으로 넣는다.

                                                                       // 해당 이벤트가 발생했을 때 실행 할 코드를 지정해주는 것


    - 인라인 모델(inline model) 또는 인라인 등록 모델(inline registration model)

       이벤트를 HTML 엘리먼트의 속성으로 추가하는 방식 , 여러개의 함수를 호출하는 경우는 ;(세미콜론)으로 구분한다.


      <body onload = 'javascript:함수1();함수2()'>        

  

    - 이벤트 핸들러를 객체의 프로퍼티로 취급하여 직접 접근도 가능하다.

       window.onload = 함수객체   // 제거하기 위해서는 null

   

    - 기본 모델(traditional model) 또는 기본 등록  모델(traditional registration model)

       이벤트 핸들러를 객체의 프로퍼티로 취급하여 함수를 배정하는 방식  

       

        function Msg_Event(){
            var strMsg = 'Thank you';
            alert(strMsg);
        }
     
        window.onload = Msg_Event();          
   
       <body onload = 'javascript:Msg_Event();'>


   

    ① 이벤트 객체


       -  IE나 파이어 폭스 공통으로 사용되는 Event 프로퍼티


           ① altKey

               이벤트가 발생한 시점에서의  Alt 키의 눌림 여부


           ② clientX

               클라이언트의 X좌표


           ③ clientY

               클라이언트의 Y좌표


           ④ ctrlKey

               이벤트가 발생한 시점에서 ctrl 키의 눌림 여부


           ⑤ keyCode

               눌린 키의 코드값(숫자)


           ⑥ screenX

               이벤트가 발생한 스크린 X 좌표


           ⑦ screenY

               이벤트가 발생한 스크린 Y 좌표


           ⑧ shiftKey

               이벤트가 발생한 시점에서 shift 키의 눌림 여부


           ⑨ type

               이벤트 종류


           ⑩ fromElement (IE) , relatedTarget(파이어 폭스, 넷스케이프)

               onMouseOver나 onMouseOut 이벤트를 사용할 경우의 마우스 객체                


           ⑪ toElement(IE) , currentTarget(파이어 폭스, 넷스케이프)

               마우스 포인터 위치해 있는 객체 설정 혹은 현재 접근하는 엘리먼트               


           ⑫ scrElement(IE) , target(파이어 폭스, 넷스케이프)

               이벤트를 발생한 객체 설정 혹은 이벤트를 직접 받는 객체


           ⑬ 이벤트 프로퍼티 기타 목록

                  

                 ㉠ bubbles

                     이벤트가 DOM을 통해서 버블링 되었는지의 여부


                 ㉡ button

                     마우스 버튼의 상태(눌림 여부)


                 ㉢ cancelBubble

                     버블링의 취소 여부


                 ㉣ cancelable

                     이벤트의 취소 여부


                 ㉤ detail

                     이벤트의 세부 사항


                 ㉥ eventPhase

                     이벤트의 진행 단계


                 ㉦ isChar

                     이벤트가 문자를 발생시키는지의 여부


                 ㉧ layerX , layerY

                      position 프로퍼티가 absolute인 경우,

                      현재 레이어에서의 상대 x(y) 좌표  


                 ㉨ metaKey

                    메타 키 (ctrl/alt/shift 키) 의 상태 (눌림 여부)                      


                 ㉩ pageY , pageX

                     페이지 내의 상대 x(y) 좌표

                   

                 ㉪ timeStamp

                     이벤트가 발생한 시각


                 ㉫ view

                     이벤트가 생성된 AbstractView ( 무슨 말이지 모르겠네요)


                 ㉬ which

                     눌린 키의 유니코드 값


         - IE 에서는 Event가 window 객체의 프로퍼티로 이벤트가 발생하면 그에 따른 데이터가 프로퍼티에  담긴다.

       

             function mouseDown(){
                 var locStr = 'x = ' + window.event.screenX + ' y = ' + window.event.screenY;
                 alert(locStr);
            }
     
            document.onmousedown = mouseDown;         


         -  파이어 폭스는 nsEvent 이벤트 객체로 이벤트가 발생하여 그에 따른 데이터가 프로퍼티에 담긴다.

     

             function mouseDown(nsEvent){
                  var locStr = 'x = ' + nsEvent.screenX + ' y = ' + nsEvent.screenY;
                  alert(locStr);
             }
     
             document.onmousedown = mouseDown;


        - 크로스 브라우저 코드

           여러 브라우저에서 호환되는 코드 , 즉 DOM 레벨 0 이벤트가 IE와 파이어 폭스(넷스케이프)로 나누어져 있으므로

           자바스크립트 코드를 작성할 코드 호환되도록 작성하는 코드


           function mouseDown(nsEvent){
                var theEvent = nsEvent ? nsEvent : window.event;
                var locStr = 'x = ' + theEvent .screenX + ' y = ' + theEvent .screenY;
                alert(locStr);
           }
     
           document.onmousedown = mouseDown;        

         

    ② 이벤트 버블링(IE) , 이벤트 캡처링(넷스케이프 , 파이어폭스)

        하나의 이벤트가 하나의 엘리먼트에만 영향을 미치는 것이 아니라 여러 개의 엘리먼트에 영향을 미칠 경우를 말함.

         

         <script type = 'text/javascript'>
              function mouseDown(nsEvent){
                  var theEvent = nsEvent ? nsEvent : window.event;
                  var locString = 'X = ' + theEvent.screenX + ' Y = ' + theEvent.screenY;
                  var theSrc = theEvent.target ? theEvent.target : theEvent.srcElement;
     
                  alert(locString + ' ' + theSrc);

                 

                  /*

                       버블 이벤트 종료 시키기 아래 함수를 호출하기 위해 이벤트  버블을 하지 않는다.

                  */

                  // document.onmousedown = stopEvent;              

             }
         
             document.onmousedown = function(evnt){
                  var theEvnt = evnt ? evnt : window.event;
                  alert('*' + theEvnt.type);
             }
     
             window.onload = setupEvents;  
     
             function setupEvents(){
                 document.getElementById('1st').onmousedown = mouseDown;
                 document.getElementById('2st').onmousedown = function () {
                        alert('Second event handler');
                 }
             }


             /* 버블 함수를 종료시키기 위한 함수 */

             /*

             function stopEvent(evnt){
                if(evnt.stopPropagation){
                    evnt.stopPropagation();   // 넷스케이프의 경우
                }else{
                   evnt.cancelBubble = true; // IE의 경우
                }
             }          

             */
         </script>

         ****************************************************************************

          <div id = '1st' style='padding : 20px ; background-color : #feb ; width : 150px'>
                <div id = '2st' style='background-color : #f00; width : 100px ; height : 100px'>
               </div>
          </div>

         *****************************************************************************


    ③ 이벤트 핸들러와 this

         이벤트  핸들러 함수나 객체 메소드 내에서 엘리먼트의 프로퍼티에 접근하기 위해 this를 사용한다.

        

         window.onload = setupObjects;
 
         function setupObjects() {
              document.personData.firstName.onblur = testValue;
         }
 
         function testValue() {
             alert('Hi ' + this.value); // 폼 필드값  
         }        

         *****************************************************************************

         <form name = 'personData'>
               First Name : <input type='text' name = 'firstName' /> <br /> <br />
               Second Name : <input type = 'text' name = 'secondName' />
         </form>

         *****************************************************************************

        

         ※ DOM 레벨 2  이벤트 모델과 이전 버전과의 차이점

             - 특정 이벤트 핸들러 프로퍼티에 의존적이지 않음.

             - 하나의 이벤트나 객체 다수의 이벤트 핸들러를 등록이 가능함.

             - 이벤트 핸들러의 프로퍼티 외에 각 객체는 세가지 메소드를 가지고 있음.


                ㉠ addEventListener

                    이벤트 리스너를 추가하기 위한 메소드

                    예)

                    object.addEventListener('이벤트명' , '이벤트 함수', true|false);

                   

                     - 이벤트명  : click 이나 onload 등등...

                     - 이벤트 함수명 : 개발자가 작성한 함수명

                     - true | false { 케스케이드다운(cascade-down)과 버블업(bubble-up)의 두 가지 방식)}

                               true : 케스케이드 다운 방식

                               false : 버블 방식


                ㉡ removeListener  

                    기존 리스너를 제거하기 위한 메소드  


                ㉢ dispatchListener  

                    이벤트를 신속히 처리하기 위한 메소드

                

                 [넷스케이프 , 파이어폭스 전용] , IE에서는 에러  

                 function writeX(evnt){
                      alert('Capturing : ' + evnt.target + ' ' + evnt.currentTarget);
                      return true;
                 }
 
                  function writeY(evnt){
                      alert('Bubbing : ' + evnt.target + ' ' + evnt.currentTarget);
                      return true;
                 }
 
                 window.onload = setup;
 
                 function setup(evnt){
                      // 이벤트 캡처
                       document.addEventListener('click', writeX, true);
                       document.forms[0].addEventListener('click',writeX,true);
                       document.froms[0].elements[0].addEventListener('click',writeX,true);
   
                      // 이벤트 버블업 - 실행되지 않음 .....        
                     document.addEventListener('click',writeY,false);

                     document.forms[0].addEventListener('click',writeY,false);
                     document.forms[0].elements[0].addEventListener('click',writeY,false);
                 }               


                 ※ AddEventListener를 IE 7에서는 지원하지 않음


                 ***********************************************************************************

                  AddEventListener를 사용하지 못할 경우 아래 와 같은 방법을 사용한다.

                  크로스 브라우저 코드

                 ***********************************************************************************

                 

                  function clickMe(evnt){
                       evnt = evnt ? evnt : window.event;
                       alert(evnt.target + ' ' +  evnt.type);
                       alert('Can be canceled? ' + evnt.cancelable);
                       alert('Bubbling? ' + evnt.bubbles);
                       alert(evnt.timeStamp);
                 }
  
                 window.onload = setup;


                 /*
                 윈도우 unload 이벤트를 캡처해서 detachEvent로 설정된 이벤트들을 제거해야 한다.
                 윈도우의 메모리 낭비를 막기위해 사용된다. 
                 */


                 window.onunload = cleanup;
  
                 function setup(evnt){
                        var evtObject = document.getElementById('clickme');
    
                        // 객체 모델 테스트
                       if(evtObject.addEventListener){
                              document.addEventListener('click',clickMe,false);
                        }else if(evtObject.attachEvent){
                              evtObject.attachEvent('onclick',clickMe);
                       }else if(evtObject.onclick){
                              evtObject.onclick = clickMe;
                       }
                }
  
                // 이벤트 핸들러 제거 (IE이 경우 적용)
                function cleanup(){
                      var evtObject = document.getElementById('clickme');
                       if(evtObject.detachEvent){
                             evtBoject.detachEvent('onclick', clickMe);
                       }
                }                 

              

    ④ 이벤트 생성

        특정 시점에 이벤트를 발생시키는 경우에 사용된다. (대표적으로 focus() 메소드를 사용하는 경우 사용한다.)

       
         window.onload = setObjects;
 
         function setObjects() {
              document.personData.lastName.focus();
         }

        <form name = 'personData'>
              First Name : <input type = 'text' name  = 'firstName' /><br /> <br />
              Last  Name : <input type = 'text' name  = 'lastName' />
        </form>


2010년 3월 15일 월요일

2010년 3월 12일 금요일

[HTML/JAVASCRIPT] 레이어 팝업

<?
if('211.174.235' == substr($_SERVER['REMOTE_ADDR'],0,11))  { ?>

<HTML>
<HEAD>
<STYLE type=text/css>
BODY {FONT-SIZE: 9pt; BACKGROUND: #ffffff; COLOR: #787878; FONT-FAMILY: 굴림,tahoma}
</STYLE>
</HEAD>

<BODY>
<script language=javascript>

        var IE5=(document.getElementById && document.all)? true : false;
        var W3C=(document.getElementById)? true: false;
        var currIDb=null, currIDs=null, xoff=0, yoff=0; zctr=0; totz=0;

        function trackmouse(evt){
                if((currIDb!=null) && (currIDs!=null)){
                        var x=(IE5)? event.clientX+document.body.scrollLeft : evt.pageX;
                        var y=(IE5)? event.clientY+document.body.scrollTop : evt.pageY;
                                currIDb.style.left=x+xoff+'px';
                                currIDs.style.left=x+xoff+10+'px';
                                currIDb.style.top=y+yoff+'px';
                                currIDs.style.top=y+yoff+10+'px';
                        return false;
                }
        }

        function stopdrag(){
                currIDb=null;
                currIDs=null;
                NS6bugfix();
        }

        function grab_id(evt){
                xoff=parseInt(this.IDb.style.left)-((IE5)? event.clientX+document.body.scrollLeft : evt.pageX);
                yoff=parseInt(this.IDb.style.top)-((IE5)? event.clientY+document.body.scrollTop : evt.pageY);
                currIDb=this.IDb;
                currIDs=this.IDs;
        }

        function NS6bugfix(){
                if(!IE5){
                        self.resizeBy(0,1);
                        self.resizeBy(0,-1);
                }
        }

        function incrzindex(){
                zctr=zctr+2;
                this.subb.style.zIndex=zctr;
                this.subs.style.zIndex=zctr-1;
        }

        function createPopup(id, title, width, height, x , y , isdraggable, boxcolor, barcolor, shadowcolor, text, textcolor, textptsize, textfamily ){
                if(W3C){
                        zctr+=2;
                        totz=zctr;
                        var txt='';
                                txt+='<div id="'+id+'_s" style="position:absolute; left:'+(x+7)+'px; top:'+(y+7)+'px; width:'+width+'px; height:'+height+'px; background-color:'+shadowcolor+'; filter:alpha(opacity=50); visibility:visible"> </div>';
                                txt+='<div id="'+id+'_b" style="border:outset '+barcolor+' 2px; position:absolute; left:'+x+'px; top:'+y+'px; width:'+width+'px; overflow:hidden; height:'+height+'px; background-color:'+boxcolor+'; visibility:visible">';
                                txt+='<div style="width:'+width+'px; height:16px; background-color:'+barcolor+'; padding:0px; border:1px"><table cellpadding="0" cellspacing="0" border="0" width="'+(IE5? width-4 : width)+'"><tr><td width="'+(width-20)+'"><div id="'+id+'_h" style="width:'+(width-20)+'px; height:14px; font: bold 12px Tahoma; cursor:move; color:'+textcolor+'"> '+title+'</div></td><td align="right"><a onmousedown="document.getElementById(\''+id+'_s\').style.display=\'none\'; document.getElementById(\''+id+'_b\').style.display=\'none\';return false"><img src="http://www.blueb.co.kr/SRC/javascript/image/close.gif" border="0" height="15" width="15"></a></td></tr></table></div>';
                                txt+='<div id="'+id+'_ov" width:'+width+'px; style="margin:5px; color:'+textcolor+'; font:'+textptsize+'pt '+textfamily+';">'+text+'</div></div>';
                                document.write(txt);
                                this.IDh=document.getElementById(id+'_h');
                                this.IDh.IDb=document.getElementById(id+'_b');
                                this.IDh.IDs=document.getElementById(id+'_s');
                                this.IDh.IDb.subs=this.IDh.IDs;
                                this.IDh.IDb.subb=this.IDh.IDb;
                                this.IDh.IDb.IDov=document.getElementById(id+'_ov');
                                if(IE5){
                                        this.IDh.IDb.IDov.style.width=width-6;
                                        this.IDh.IDb.IDov.style.height=height-22;
                                        this.IDh.IDb.IDov.style.scrollbarBaseColor=boxcolor;
                                        this.IDh.IDb.IDov.style.overflow="auto";
                                }
                                else{
                                        this.IDh.IDs.style.MozOpacity=.5;
                                }
                                this.IDh.IDb.onmousedown=incrzindex;
                                if(isdraggable){
                                        this.IDh.onmousedown=grab_id;
                                        this.IDh.onmouseup=stopdrag;
                                }
                        }
                }

        if(W3C)document.onmousemove=trackmouse;
        if(!IE5 && W3C)window.onload=NS6bugfix;       
       
</script>

<script language=javascript>

        createPopup( 'popup1', 'popup 1' ,  300, 120, 50, 50, true, '#ebebeb' , '#787878' , '#cccccc' ,  '<font color="#787878">You can drag and drop these boxes by using the titlebar as the handle if dragging has been enabled.<br>Dragging has been disabled for this box.</font>' , '#ffffff' , 8 , 'Tahoma');

<!-- 이부분은 팝업창을 두개 이상할때를 보여주기 위한 부분입니다 -->
        createPopup( 'popup2', 'popup 2' ,  220, 130, 50, 250, true, '#c0c0c0' , '#555555' , '#c0c0c0' ,  'The HTML in these boxes will wrap if they need to. In NS6, any HTML past the bottom will get chopped off (because of some weird stuff NS6 does while dragging scrollable DIVs), while IE will display a scrollbar to scroll down.<br><br>' , '#f3f3f3' , 10 , 'Arial');


<!-- 이부분은 팝업창을 두개 이상할때를 보여주기 위한 부분입니다 -->
        createPopup( 'popup3', 'popup 3' ,  320, 130, 250, 80, true, '#c0c0c0' , '#555555' , '#c0c0c0' ,  '이곳에 팝업내용을 삽입하세요.        ' , '#f3f3f3' , 10 , 'Arial');

</script>
</P>

</BODY>
</HTML>


<?
}
?>

2010년 2월 23일 화요일

[자바스크립트] SELECT 박스 값 제어하기

셀렉트 콤보 박스가 있고
체크박스 클릭시 셀렉트 박스의

<select name="month">
<option>선택</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>

3개월 신청<input type="checkbox" onClick="update()" name="box_check" value="3">

위와 같이 셀렉트 박스랑 체크박스가 있는데요
체크 박스를 체크했을때
현재 달에서 3을 더해서 ex) 지금이 1월이면 4월이 selected 되도록
하려고 하는데 onupdate() 함수를 어떻게 써줘야할지
간단하게나마 답변 부탁드립니다.

답변>
onClick="update(this)"
<select id="month">

function update(obj){
 var value = obj.value || 1;
 var selectObj = document.getElementById("month");

 value = parseInt(obj.value, 10)+3;
 
 for(vari=0; i<selectObj.options.length;i++ ){
  if( selectObj.options[i].text == value){
    selectObj.options[i].selected = "selected";
    break;
  }
 }
}

2010년 2월 5일 금요일

[자바스크립트] 왼쪽 or 오른쪽 영역 따라다니는 스크롤 배너 or 스크롤 이미지

슬라이드 스크롤 배너 more..



딱딱한 스크롤 배너 more..



2010년 1월 29일 금요일

[자바스크립트] POST 변수값 팝업창으로 넘기기

function my_popup(no) {
 open("", "mypop", "width=530, height=800"); // 먼저 빈 창을 mypop 라는 이름으로 열어놓고
    document.fwrite.action = "test_inp.php?no="+no; // 'test_inp.php' 를 fwrite이 실행될 action 으로 지정한다.
    document.fwrite.target = "mypop"; // 이 부분이 핵심! 열어놓은 빈 창(mypop)을 fwrite이 날아갈 target으로 정한다.
    document.fwrite.method = "post"; // target에 submit할 방식을 post 방식으로 지정한다.
    document.fwrite.submit(); // target에 쏜다.
}

[자바스크립트] 이미지롤오버 + 클릭 탭 네비게이션

간단하다면 간단하고 어렵다면 어려워보였던 탭 네비게이션.. 
이미지롤오버와 더불어 클릭시 탭마다 다른 내용의 테이블이 보여지는 네비게이션을 코딩해보았습니다.
핵심은 태그마다 id값이 들어가고, getElementId로 컨트롤한다는 것..

<!-- 이미지에 이미지맵을 입히고 -->
<img id="popup1" src="images/top1.jpg" width="885" height="784" border="0" usemap="#Map">       <input type="hidden" name="id_tmp" id="id_tmp">

<!-- 롤오버 및 클릭시 페이지변환없이 관련 테이블 내용 보여지는 관련 자바스크립트 -->
     <script>
     function click_start(id) {
      document.getElementById('id_tmp').value = id;

      //롤오버 정보 초기화
      for(var i=1; i<6; i++ )
      {
       document.getElementById('btn'+i).src='images/btn'+i+'.gif'
       document.getElementById('btn'+i+'_tb').style.display='none';
      }

      document.getElementById(id+'_tb').style.display='';
      rollOverImg(id);
     
     }
     
     function rollOverImg(id){
      document.getElementById(id).src='images/'+id+'r.gif'
     }
     
     function rollOutImg(id){
      if(document.getElementById('id_tmp').value == id)
       return;
      else
       document.getElementById(id).src='images/'+id+'.gif'      
     }
     </script>

<!-- 네비게이션 탭 테이블 -->
       <table width="800" border="0" cellspacing="0" cellpadding="0" style="margin-left:10px;">
        <tr>
         <td><img id="btn1" src="/promotion/201002/jejutour/images/btn1.gif" width="151" height="30" onMouseOver="rollOverImg(this.id)" onMouseOut="rollOutImg(this.id)" onClick="click_start(this.id)"></td>
         <td><img id="btn2" src="/promotion/201002/jejutour/images/btn2.gif" width="151" height="30" onMouseOver="rollOverImg(this.id)" onMouseOut="rollOutImg(this.id)" onClick="click_start(this.id)"></td>
         <td><img id="btn3" src="/promotion/201002/jejutour/images/btn3.gif" width="151" height="30" onMouseOver="rollOverImg(this.id)" onMouseOut="rollOutImg(this.id)" onClick="click_start(this.id)"></td>
         <td><img id="btn4" src="/promotion/201002/jejutour/images/btn4.gif" width="151" height="30" onMouseOver="rollOverImg(this.id)" onMouseOut="rollOutImg(this.id)" onClick="click_start(this.id)"></td>
         <td><img id="btn5" src="/promotion/201002/jejutour/images/btn5.gif" width="151" height="30" onMouseOver="rollOverImg(this.id)" onMouseOut="rollOutImg(this.id)" onClick="click_start(this.id)"></td>
        </tr>
       </table>

<!-- 실험대상 테이블 -->
<!-- 한 행 tr태그마다 id값을 줘야한다. -->

<table>
     <tr id="btn1_tb">
      <td>1</td>
     </tr>
     <tr id="btn2_tb" style="display:none">
      <td>2</td>
     </tr>
     <tr id="btn3_tb" style="display:none">
      <td>3</td>
     </tr>
     <tr id="btn4_tb" style="display:none">
      <td>4</td>
     </tr>
     <tr id="btn5_tb" style="display:none">
      <td>5</td>
     </tr>
   </table>


 

2010년 1월 27일 수요일

[자바스크립트] 키입력으로 텍스트박스의 이동



키 입력으로 텍스트 박스를 이동시킬때 쓰는 스크립트

주민등록번호나 전화번호등의 길이가 정해진 텍스트박스에 사용하면 좋을듯.

예제)

주민등록번호 -

사용스크립트)

    <script type="text/javascript">

        // 숫자만 입력가능

        function fn_onlyNum(frm, value) {

            if (

        (event.keyCode >= 48 && event.keyCode <= 57) ||

        (event.keyCode >= 96 && event.keyCode <= 105) ||

        (event.keyCode >= 37 && event.keyCode <= 40) ||

        event.keyCode == 9 ||

        event.keyCode == 8 ||

        event.keyCode == 46 || event.keyCode == 109 || event.keyCode == 189

        ) {

                //48-57(0-9)

                //96-105(키패드0-9)

                //8 : backspace

                //46 : delete key

                //9 :tab

                //37-40 : left, up, right, down

                //109,189 : -

                event.returnValue = true;

            }

            else {

                //alert('숫자만 입력 가능합니다.');

                //frm.value = "";

                event.returnValue = false;

            }

        }

   

        // 숫자와 엔터키만 입력가능

        function fn_onlyNumOrEnter(frm, value) {

            if (

        (event.keyCode >= 48 && event.keyCode <= 57) ||

        (event.keyCode >= 96 && event.keyCode <= 105) ||

        (event.keyCode >= 37 && event.keyCode <= 40) ||

        event.keyCode == 9 ||

        event.keyCode == 8 ||

        event.keyCode == 46 ||

        event.keyCode == 13

        ) {

                //48-57(0-9)

                //96-105(키패드0-9)

                //8 : backspace

                //46 : delete key

                //9 :tab

                //37-40 : left, up, right, down

                event.returnValue = true;

            }

            else {

                //alert('숫자만 입력 가능합니다.');

                //frm.value = "";

                event.returnValue = false;

            }

        }

        // 텍스트 박스 다음 포커스 이동

        function fn_NextFocus(obj_id, targetobj_id, obj_maxlength) {

            if (event.keyCode != 8 && event.keyCode != 9 && event.keyCode != 13 && event.keyCode != 46) {

 

                var txtStart = document.getElementById(obj_id);

                var txtEnd = document.getElementById(targetobj_id);

 

                if (txtStart.value.length >= obj_maxlength) {

                    txtEnd.focus();

                }

            }

        }

        // 텍스트 박스 이전 포커스 이동

        function fn_PreviousFouse(obj_id, targetobj_id) {

 

            var obj = document.getElementById(obj_id);

            var target_obj = document.getElementById(targetobj_id);

 

            if (event.keyCode == 8 && obj.value.length == 0) {

                target_obj.focus();

                target_obj.value = target_obj.value;

            }

        }

    </script>


사용방법)

onkeydown="fn_onlyNum(this, this.value);fn_NextFocus(this.id, 'tbxMinbun2', 6);"

onkeydown="fn_onlyNum(this, this.value);fn_PreviousFouse(this.id, 'tbxMinbun1');"

 

한글인 경우 써지는 버그가 있다. 그럴경우엔 이걸 넣어주면된다.

style="ime-mode:active" 한글모드

style="ime-mode:inactive" 영문모드

style="ime-mode:disabled" 오직영문모드