JavaScript Keyboard Events [In-Depth Tutorial]


JavaScript

Events are the life of interactive webpages, and without JavaScript, there is so much we can do. With JavaScript, the language developers give us built-in functions that allow us to work with events and connect certain actions to them. Here, our focus is on keyboard events (there are mouse events too) in JavaScript. It allows developers to perform various actions based on keyboard events.

In this article, we will discuss three keyboard events - keydown, keypress, and keyup - and how we can create them using the addEventListener() methods in JavaScript

 

Different Keyboard Events in JavaScript

Keyboard events are actions that occur in the browser when a user presses or releases a keyboard key. In JavaScript, keyboard events can be used to perform specific actions in response to keyboard input. We have three main keyboard events in keydown, keyup and keypress. Let’s start with keydown.

 

Using the keydown event in JavaScript

The keydown event is fired when a keyboard key is pressed down. This event is fired repeatedly while the key remains pressed. The keydown event can be used to perform actions when a key is first pressed, such as moving an object in a specific direction. For us to access the keydown event, we need the the key/code so that we can connect an action to the event.code.

Here is an example of how we can craft a keydown event in JavaScript. In this example, we create a simple webpage where if we press G, it grows the box. However, if we press S, it shrinks the box.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>JavaScript Keyboard Event</title>
        <style>
            #box {
                width: 200px;
                height: 200px;
                background-color: deeppink;
                margin: 0 20px 20px 0;
            }
        </style>
    </head>
    <body>
        <h1>Understanding JavaScript Mouse Events</h1>
        <p id="text">
            Keyboard Events are wonderful to work with, and probably make a lot
            of sense as users will use keyboards to interact with your site.
        </p>
        <p>Press <b>G</b> to grow box</p>
        <p>Press <b>S</b> to shrink box</p>
        <div id="box"></div>
    </body>
    <script src="script.js"></script>
</html>

The script.js file

let box = document.getElementById("box");

document.addEventListener("keydown", function (event) {
    if (event.code === "KeyG") {
        box.style.width = "300px";
        box.style.height = "300px";
    }
    if (event.code === "KeyS") {
        box.style.width = "100px";
        box.style.height = "100px";
    }
});

Output

In the code, we select the div that has the box with getElementById() method. Afterwards, we use the addEventListener() method to apply the keydown event and pass the anonymous function that will serves as the listener. Inside this anonymous function, we check the event.code and see if it is either KeyG or KeyS and execute the properties changes for their respective if blocks.

 

Using the keypress event in JavaScript

In another keyboard event, the keypress event is fired when a keyboard key is pressed and then released. It is used to detect the actual character that is entered by the user. The keypress event can be used to perform actions when a specific character is entered, such as starting a search when the Enter key is pressed.

Just as with the keydown event, we need a charCode that will tell us what the keyboard is doing at the point in time. We can simply recreate the same example with changes to the event type and charCode data.

let box = document.getElementById("box");

document.addEventListener("keypress", function (event) {
    if (event.charCode === 103) {
        box.style.width = "300px";
        box.style.height = "300px";
    }
    if (event.charCode === 115) {
        box.style.width = "100px";
        box.style.height = "100px";
    }
});

Output

However, you should know that the keypress event has been deprecated and you can simply use the keydown event in place.

 

Using the keyup event in JavaScript

The keyup event is fired when a keyboard key is released. This event is fired only once, even if the key is held down for an extended period of time. The keyup event can be used to perform actions when a key is released, such as stopping an object from moving when a key is released.

For us to access the keyup event, we need the the key/code so that we can connect an action to the event.code. To illustrate how we can work with the keyup event, we will modify the example (using the same HTML) to work with arrow keys where the left key reduces the box and the right key increases the box.

let box = document.getElementById("box");

document.addEventListener("keyup", function (event) {
    if (event.code === "ArrowRight") {
        box.style.width = "300px";
        box.style.height = "300px";
    }
    if (event.code === "ArrowLeft") {
        box.style.width = "100px";
        box.style.height = "100px";
    }
});

Output

 

Summary

JavaScript keyboard events provide a way for developers to respond to user interactions with the keyboard. By using the keydown, keypress, and keyup events, developers can create interactive and responsive web applications that respond to keyboard input in real-time. These events can be used to perform specific actions based on which keys are pressed, such as starting a search or moving an object on the screen. The examples above show how the keydown, keypress, and keyup events can be used in JavaScript to perform actions based on keyboard input. However, do remember that the keypress have been deprecated along with the charCode property.

 

References

KeyboardEvent.code - Web APIs | MDN (mozilla.org)
EventTarget.addEventListener() - Web APIs | MDN (mozilla.org)
Element: keypress event - Web APIs | MDN (mozilla.org)
KeyboardEvent.charCode - Web APIs | MDN (mozilla.org)
Element: keyup event - Web APIs | MDN (mozilla.org)

 

Olorunfemi Akinlua

Olorunfemi Akinlua

He is boasting over five years of experience in JavaScript, specializing in technical content writing and UX design. With a keen focus on programming languages, he crafts compelling content and designs user-friendly interfaces to enhance digital experiences across various domains. You can connect with him on his LinkedIn profile.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to admin@golinuxcloud.com

Thank You for your support!!

Leave a Comment