LoginSignup
0
1

More than 3 years have passed since last update.

【JavaScript基礎】キーボード入力時に処理をする

Posted at

JavaScriptにおける「キーボード入力時に処理するイベント」について、自己の忘備録としてまとめています。

参考URL

参考著書

文字を入力するたびに処理をする

キーの入力時に発生するイベントはkeydown、keyup、keypressで監視することができます。

イベント名 発生タイミング
keydown キーが押されたとき
keyup キーが離されたとき
keypress 文字を生成するキーが押されたとき
<!-- HTML -->
<textarea class="textarea"></textarea>
// JS
const textarea = document.querySelector('.textarea');

// キーが押されたとき
textarea.addEventListener('keydown', () => {
    console.log('キーが押されました。');
});

// 文字が入力された
textarea.addEventListener('keypress', () => {
    console.log('文字が入力されました。');
});

// キーが離されたとき
textarea.addEventListener('keyup', () => {
    console.log('キーが離されました。');
});

入力されたキーを調べる

KeyboardEventオブジェクトのプロパティを調べることで、入力されたキーの種類を判定できます。keydownやkeyupイベントと組み合わせて使用します。

プロパティ 意味
キーボードイベント.key 押されたボタンの値 文字列
キーボードイベント.code 押されたボタンのコード 文字列
キーボードイベント.altKey Altキーが押されたかどうか 真偽値
キーボードイベント.ctrlKey Ctrlキーが押されたかどうか 真偽値
キーボードイベント.shiftKey Shiftキーが押されかどうか 真偽値
キーボードイベント.metaKey metaキー※が押されたかどうか 真偽値
キーボードイベント.repeat キーを押しっぱなしにしているかどうか 真偽値
キーボードイベント.isComposing 入力が未確定かどうか※ 真偽値

※metaキーは、Macであれば⌘キーを指す。
※全角で日本語を入力中に、確定しない状態であればtrueとなる。

// JS
const textarea = document.querySelector('.textarea');

// キーが押されたとき
textarea.addEventListener('keyup', (event) => {
    // 出力例は「a」を押したととき
    console.log(event.key); //'a'
    console.log(event.code); //'KeyA'
    console.log(event.altKey); // false
    console.log(event.ctrlKey); // false
    console.log(event.shiftKey); // false
    console.log(event.metaKey); // false
    console.log(event.repeat); // false
    console.log(event.isComposing); // false
});

どのキーが押されたを判定するには、キーコードの数値を使用します。

const handleKeyDown = (event) => {
    // キーコード(どのキーが押されたか)を取得
    const keyCode = event.keyCode;

    if (keyCode === 39) {
        console.log('右キーが押されました。');
    }
};

window.addEventListener('keydown', handleKeyDown);
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1