학원/JS

11/09 39-1 [JS] KeyboardEvent

도원결의 2022. 11. 9. 18:14

키보드 이벤트 : 텍스트상자( <input type="text"~ >    또는    <input type="password"  ~>등 ) 
        입력상자에서 적용되는 이벤트
        keydown:"모든 키"를 누를 때 발생하는 이벤트
        keyup:키보드를 뗄 때 발생하는 이벤트
        keypress:"문자 키"를 누를 때 발생하는 이벤트(방향키나 DELETE키,한글 누를 때는 발생안함-FIREFOX에서만 적용안됨)

 

 

받은 HTML

   <fieldset>
        <legend>key이벤트 테스트</legend>
        keydown: <input type="text" />
        keyup: <input type="text" onkeyup="fnKeyHandler(1)" />
        keypress: <input type="text" onkeypress="fnKeyHandler(2)" />
    </fieldset>
    <fieldset>
        <legend>주민번호</legend>
        <input type="text"  size="6" maxlength="6" onkeyup="fnSetFocus(this)" />
        -
        <input type="text" size="7" maxlength="7" id="ssn" />
    </fieldset>

 

이벤트 객체 확인 먼저 해봄

//확인용 코드
window.addEventListener('DOMContentLoaded',function(){
	var input = document,querySelector('input');
    input.onkeydown = function(e){
 		console.log('keydown이벤트 발생');
        console.log('이벤트명:',e.type);
        console.log('e.key:',e.key);
        console.log('e.keyCode:',e.keyCode);
        console.log('e.code:',e.code);
        console.log('ENTER' === e.key.toUpperCase());  // 엔터일때 
        console.log( 13 === e.keyCode);  // 이게 더 낫겟음

        if(13 === e.keyCode){   // this는 e.target과 같다.
        console.log('입력한 문자열:',this.value); // 이거나 input.value 랑 같음 ! 
        }                       
    };
});

===> 키보드 5 입력 시 출력

 

 
 // 보낸 HTML파일에서 보면 같은 함수인데 인자만 다르게 해서 리턴값이 다르게 나오게 함 
 function fnKeyHandler(flag){
 		switch(flag){   // swich문으로 나눠줌 
        	case 1: console.log('keyup 이벤트 발생'); break;   //키보드 뗐을 때
            default : console.log('keypress이벤트 발생');     //키보드 누르고 있을 때
        }
 }

//주민번호 앞에 6자리 누르면 바로 뒷 자리 입력할 수 있기 focus 이동 하기 !! 
 function fnSetFocus(obj){
 	 if(obj.value.length == 6 ) document.querySelector('ssn').focus()
 }
key이벤트 테스트 keydown: keyup: keypress:
주민번호 -