DCSIMG
Back to Basics – Using Keyboard Events in JavaScript - Gil Fink's Blog

Gil Fink's Blog

Fink about IT

News

Microsoft MVP

My Facebook Profile My Twitter Profile My Linkedin Profile

Locations of visitors to this page

Creative Commons License

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.
© Copyright 2013 Gil Fink

Hebrew Articles

Index Pages

My OSS Projects

English Articles

Back to Basics – Using Keyboard Events in JavaScript

Back to Basics – Using Keyboard Events in JavaScript

A few months ago I was implementing a POC for a customer and was in a need for reading keyboard presses through JavaScript. I was asked the same question today so I guess that means a post.

The Scenario

You need to read all the keyboard key presses up until the Enter key is used.
You should output the typed word without the Enter key.

Wiring The Events

In order to listen to key presses, you will wire an event listener to the keypress event. That event listen to all key presses and in its handler you will store the key pressed (but won’t store the Enter key press). Here is an example for doing that:

window.addEventListener('keypress', function (e) {
    if (e.keyCode !== 13) {
        chars.push(e.key);
    }
}, false);

In the example, you wire the keypress event. If the key press isn’t Enter (Enter key code is 13), you push the pressed key to a character array.

In order to catch the Enter key press and output the typed word, you will wire an event listener to the keyup event. That event listen to the end of key pressing (when the user stop pressing a key). Here is an example for wiring the event:

window.addEventListener('keyup', function (e) {
    if (e.keyCode === 13) {
        container.textContent = chars.join('');
        chars = [];
    }
}, false);

In the example, you wire the keyup event. If the key is released, you check whether the pressed key was Enter. If the key was Enter, you put the content of the characters array into a container div and you clear the array.

The Full Example

Here is all the code for the example:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Keyboard Reading</title>
 
    <script type="text/javascript">
    (function () {
        function contentLoaded () {    
                var chars = [],
                container = document.getElementById('container');
 
                window.addEventListener('keypress', function (e) {
                if (e.keyCode !== 13) {
                            chars.push(e.key);
                }
                }, false);
 
                window.addEventListener('keyup', function (e) {
                    if (e.keyCode === 13) {
                        container.textContent = chars.join('');
                chars = [];
                       }
                }, false);
        }
 
        window.addEventListener('DOMContentLoaded', contentLoaded, false); 
    }());
    </script>
</head>
<body>
    <div id="container">
    </div>
</body>
</html>

Summary

In order to read keyboard pressed keys in JavaScript you can use events such as keypress and keyup. The example that I showed is very basic but it was the starting point for reading data sent from a barcode reader that was acting like a keyboard in the POC I mentioned.

Comments

Mohammed said:

This is the elephant in the corner, the very basic and very important stuff that no one is paying attention to anymore,

Thanks Gil .. Todah Rabah :)

# September 13, 2012 7:49 PM

Gil Fink said:

@Mohammed,

With pleasure :-)

# September 14, 2012 2:10 PM