본문 바로가기

프로그래밍/JavaScript

[JavaScript] onKeyPress/onKeyUp/onKeyDown 비교

반응형

키보드 이벤트 함수 onKeyDown/onKeyUp/onKeyPress를 비교해보자


onKeyDown

키를 눌렀을 때 이벤트 발생

즉, 키를 입력하면 이벤트 발생 후 문자가 입력된다.


onKeyUp

키를 눌렀다 놓았을 때 이벤트 발생

즉, 키를 입력하면 문자 입력 후 이벤트가 발생된다.


onKeyPress

onKeyDown과 이벤트는 같다.



  비교


1) onKeyDown, onKeyUp은 Keycode값이고, onKeyPress는 ASCII 값이다.

2) onKeyPress는 ASCII값이기 때문에 shift, ctrl, backspace, tab, 한/영 등의 키를 인식하지 못한다.




  예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <script>
    function keyevent() {
        var keycode = event.keyCode;
        alert("키값 : " + keycode);   
    }
</script>
 </head>
 <body>
<table>
    <tr>
        <td>onKeyDown</td>
        <td><input type="text" onkeydown="javascript:keyevent(this);"></td>
    </tr>
    <tr>
        <td>onKeyUp</td>
        <td><input type="text" onkeyup="javascript:keyevent(this);"></td>
    </tr>
    <tr>
        <td>onKeyPress</td>
        <td><input type="text" onkeyPress="javascript:keyevent(this);"></td>
    </tr>
</table>
 </body>
</html>
cs


다음과 같은 코드 작성 시 아래와 같은 화면을 볼 수 있다.




자, 먼저 onKeyDown은 이벤트 발생 후 문자가 입력된다고 했는데, 과연 그런지 확인해보자!

onKeyDown 오른쪽에 있는 텍스트박스에 g키를 입력해보자




자 이렇게 g 키값에 해당하는 안내창을 띄우는 이벤트가 먼저 발생된다.




안내창의 확인 버튼을 누르면 텍스트박스에 g 문자가 입력된다.

이렇게 onKeyDown은 이벤트가 먼저 발생된다는 것을 확인했다.



그렇다면 onKeyUp은 어떨까?



순간적이라 캡처하지는 못했지만, 이렇게 g 문자가 먼저 입력되고 그 후 바로 이벤트가 발생된다.



마지막으로 onKeyPress를 확인해보자.



onKeyDown과 같이 이벤트가 먼저 발생된다.

그러나 onKeyDown, onKeyUp과는 다른 결과를 보여준다.

세 개의 텍스트박스 모두 같은 g 키를 입력했는데

onKeyDown과 onKeyUp의 키값은 71이고, onKeyPress의 키값은 103이다.


이렇게 위에서 설명했던, 다른 키값을 가진다는 것을 확인했다.




반응형