카테고리 없음

Javascript keypress, keydown differences

Soul-Learner 2017. 2. 17. 14:03

자바스크립트 keypress, keydown 이벤트의 차이점


자바스크립트의 키보드 이벤트에는 키를 누를 때 발생하는 유사한 2개의 이벤트(keypress, keydown)가 존재한다.


keypress : Character Code(ASCII Code)가 전달됨

  • 눌린 키의 문자를 구할 때 사용
  • 문자가 아닌 기능키(방향키 등)는 이벤트를 발생하지 않음
  • 눌린 키의 문자코드(아스키 코드)가 이벤트 객체에 포함됨
  • 대소문자 구분 가능
  • 아스키코드를 문자로 변환할 때는 String.fromCharCode(ascii code) 함수를 사용하면 됨


keydown : 키보드 상의 키에 매핑된 코드(Key Code)가 전달됨

  • 눌린 키를 단순히 식별하고자 할 때
  • 문자키나 기능키 등의 모든 키에서 이벤트가 발생



<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
window.addEventListener("load", function(){
	
	var input = document.getElementById("input1");
	
	// 문자 코드(아스키 대소문자 구분): 눌린 키의 해당 문자를 얻고자 할 때
	input.addEventListener("keypress", function(evt){
		var charCode = event.which || event.keyCode; // keyCode는 IE8이전에서 사용
		var ch = String.fromCharCode(charCode);
		console.log("press:"+charCode+'('+ch+')');
	});
	
	// 키 코드 (대소문자 구분 없이 동일한 숫자가 리턴됨): 
	// 눌린 키를 식별하고자 할 때(방향키, ESC, Ctrl, Shift, Alt 키등)
	input.addEventListener("keydown", function(evt){
		var keyCode = event.which || event.keyCode;
		console.log("down:"+keyCode); 
	});
});
</script>
</head>
<body>
<br>
<input type="text" id="input1">
</body>
</html>