JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで入力フィールド内のCapsLockがオンかどうかを検出する方法

JavaScriptを使えば、入力フィールド内でユーザーがCapsLock(大文字固定)をオンにしているかどうかを簡単に検出できます。ポイントとなるのは、キーボードイベントオブジェクトが持つ getModifierState() メソッドです。このメソッドに「CapsLock」を指定すると、現在のCapsLockの状態を真偽値(true / false)で取得できます。

CapsLock検出のサンプルコード

以下は、入力フィールドでCapsLockがオンになったときに警告メッセージを表示する完全な実装例です。

<!DOCTYPE html>
<html>
<head>
<style>
    #textBox {
        display: none;
        color: red;
    }
</style>
</head>
<body>
<h1>Detecting Caps Lock Example</h1>
<input class="inputfield" value="Some textBox.." />
<h2>Press caps lock in the above input field to check warning</h2>
<h2 id="textBox">WARNING! Caps lock is ON.</h2>
<script>
    var input = document.querySelector(".inputfield");
    var textBox = document.querySelector("#textBox");
    input.addEventListener("keyup", event => {
        if (event.getModifierState("CapsLock")) {
            textBox.style.display = "block";
        } else {
            textBox.style.display = "none";
        }
    });
</script>
</body>
</html>

コードの解説

  • 要素の取得: document.querySelector() を使って、入力フィールドと警告表示用の要素をそれぞれ取得します。
  • イベントの監視: addEventListener("keyup", ...) により、ユーザーがキーを離したタイミングで処理を実行します。keydownでも同様に動作します。
  • 状態の判定: event.getModifierState("CapsLock")true を返せばCapsLockはオン、false ならオフです。
  • 表示の切り替え: 判定結果に応じて、警告メッセージの display スタイルを block / none に切り替えています。

実行結果

上記のコードをブラウザで実行すると、まず次のような画面が表示されます。

JavaScriptで入力フィールド内のCapsLockがオンかどうかを検出する方法

この状態でCapsLockをオンにして入力フィールドに何かを入力すると、以下のように赤色の警告メッセージ「WARNING! Caps lock is ON.」が表示されます。

JavaScriptで入力フィールド内のCapsLockがオンかどうかを検出する方法

応用のヒント

  • keydownイベントの併用: CapsLockキー自体が押された瞬間も検出したい場合は、keydown イベントにも同じリスナーを登録するとより確実です。
  • パスワード入力への活用: ログインフォームやパスワード欄でこの仕組みを使うと、ユーザーの入力ミスを未然に防ぐことができ、UX向上につながります。
  1. 入力フィールド付きのナビゲーションメニューを作成する方法【HTML/CSS】

    Webサイトのナビゲーションバー(グローバルナビ)に検索ボックスのような入力フィールドを組み込むと、ユーザーはどのページにいてもすぐに目的のコンテンツを探せるようになり、サイト全体の使いやすさが大きく向上します。 HTMLとCSSを少し書き加えるだけで、ナビゲーションメニューの内部に入力フィールドを配置できます。ポイントは、CSSのfloat: right;を使って入力フィールドをナビゲーションバーの右側に寄せることです。それでは、具体的な実装方法を見ていきましょう。 実装のポイント nav要素: 幅を100%にして背景色を設定し、overflow: auto;を指定することで、子要素のフ

  2. CSSでフォーカス時に入力フィールドをクリアする方法

    フォーカス時に入力フィールドをクリアするには入力フィールドにフォーカスが当たった瞬間に、既存の値を自動的にクリアしたいケースはよくあります。例えば、あらかじめデフォルトのテキストを表示しておき、ユーザーがフィールドをクリックした時点でその値を消去するといった使い方です。これを実現するには、HTMLのonfocus属性を使用し、フォーカスが当たったタイミングで入力値を空文字列に設定します。以下にコード例を示します。コード例<!DOCTYPE html> <html> <head> </head> <body> <h1>フォー