본문 바로가기
프로그램

jQuery의 keydown() / keyup() / keypress() 이벤트를 활용한 실용적인 예제들

by 다온다올과함께 2024. 11. 23.

 

 

 

다음은 jQuery의 keydown(), keyup(), keypress() 이벤트를 실용적으로 활용할 수 있는 몇 가지 예제입니다. 각각의 이벤트는 특정 상황에서 효과적으로 사용할 수 있으며 아래에서 자세히 다룹니다.

 

 

 

 

1. keydown() 예제: 실시간으로 단축키 감지

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Keydown 예제</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <p>Ctrl + S를 누르면 저장 메시지가 표시됩니다.</p>
    <script>
        $(document).keydown(function(event) {
            if (event.ctrlKey && event.key === "s") {
                event.preventDefault(); // 기본 저장 동작 막기
                alert("저장되었습니다!");
            }
        });
    </script>
</body>
</html>

 

사용 시나리오: 단축키를 이용한 특정 기능 구현 (예: 저장, 새로 고침 방지 등)

 

 

 

2. keyup() 예제: 실시간 텍스트 변환 (대문자로 변환)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Keyup 예제</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <input type="text" id="input" placeholder="여기에 입력하세요" />
    <p>변환 결과: <span id="output"></span></p>
    <script>
        $('#input').keyup(function() {
            let value = $(this).val();
            $('#output').text(value.toUpperCase());
        });
    </script>
</body>
</html>

 

사용 시나리오: 실시간으로 입력 내용을 가공하여 보여주는 동적 UI.

 

 

 

 

3. keypress() 예제: 숫자만 입력받기 (Deprecated 방식)

주의: keypress()는 최신 브라우저에서는 더 이상 권장되지 않으며, 대신 keydown() 또는 input 이벤트를 사용하는 것이 좋습니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Keypress 예제</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <input type="text" id="numeric" placeholder="숫자만 입력 가능" />
    <script>
        $('#numeric').keypress(function(event) {
            let charCode = event.which || event.keyCode;
            if (charCode < 48 || charCode > 57) {
                event.preventDefault(); // 숫자가 아니면 입력 방지
            }
        });
    </script>
</body>
</html>

 

사용 시나리오: 특정 입력값을 제한 (숫자, 문자 등).

 

 

4. keydown() + keyup() 예제: 키보드로 캐릭터 이동

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>캐릭터 이동 예제</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        #character {
            width: 50px;
            height: 50px;
            background-color: red;
            position: absolute;
            top: 100px;
            left: 100px;
        }
    </style>
</head>
<body>
    <div id="character"></div>
    <script>
        let position = { top: 100, left: 100 };

        $(document).keydown(function(event) {
            const step = 10;
            switch (event.key) {
                case "ArrowUp":
                    position.top -= step;
                    break;
                case "ArrowDown":
                    position.top += step;
                    break;
                case "ArrowLeft":
                    position.left -= step;
                    break;
                case "ArrowRight":
                    position.left += step;
                    break;
            }
            $('#character').css({ top: position.top + "px", left: position.left + "px" });
        });
    </script>
</body>
</html>

 

사용 시나리오: 간단한 키보드 기반 게임이나 인터랙션 구현.

 

 

 

5. 실시간 입력 제한 (keydown + keyup): 최대 글자 수 제한

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>최대 글자 수 제한</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <input type="text" id="text" maxlength="10" placeholder="최대 10글자" />
    <p><span id="charCount">0</span>/10 글자</p>
    <script>
        $('#text').keyup(function() {
            let length = $(this).val().length;
            $('#charCount').text(length);
        });
    </script>
</body>
</html>

 

사용 시나리오: 텍스트 필드에서 실시간으로 입력 가능한 글자 수를 보여주기.

 


 

이런 방식으로 keydown(), keyup(), keypress()를 활용하여 동적이고 사용자 친화적인 UI를 구현할 수 있습니다. 최신 브라우저 환경에서는 keypress() 대신 keydown()이나 input 이벤트를 사용하는 것이 더 적합합니다.

 

 

 

#jquery #keydown() #keyup() #keypress() #event #실시간으로단축키감지 #실시간텍스트변환 #대문자로변환 #숫자만입력받기 #키보드로캐릭터이동 #최대글자수제한

 

 

 

 

반응형

댓글