✏️2021/12/11

【JavaScript】クリックイベントと等価なEnterキーイベントを追加する

ユーザーがボタンをクリックした時に起こることがEnterキーが押された時にも起こるようにします.

このサイトの大都市近郊区間大回りのページ(例えば,東京近郊区間のページ)に実装されているようなものです.


例えば,次のようなbuttonがあるとします.このボタンをクリック or Enterキーを押した時に/main.jsにある関数が発火することが目標です.

<body>
    ...
    <button type="button">検索</button>
    ...
    <script src="/main.js"></script>
</body>

これを実現するためにはmain.jsを次のようにします.ここで,発火させたい関数をfunc1とします.

let btn = document.querySelector("button");

document.body.addEventListener("keydown", (e) => {
    if (e.key == "Enter") {
    return func1();
    }
});

btn.addEventListener("click", () => {
    return func1();
});

var func1 = function() {
    //実現したい処理を書く
    //例えば↓
    console.log("Hello World")
    const word = document.getElementById('input-word');
    ・・・
}

デモ

以下にデモページの全コードを示します.検索窓に単語を入れてから検索ボタンをクリックするかEnterキーを押すと, 入力した単語+"の検索結果は以下の通りです." を出力します.何も入力されていない状態で呼び出されると "何も入力されていないです." を出力します.



index.htmlは次の通りです.

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta word="viewport" content="width=device-width, initial-scale=1.0">
    <title>クリックエンターデモ</title>
</head>
<body>
    <input type="text" id="input-word">
    <button type="button">検索</button>
    <p id="result"></p>
    <script src="./main.js"></script>
</body>
</html>

main.js は次の通りです.

let btn = document.querySelector("button");

document.body.addEventListener("keydown", (e) => {
    if (e.key == "Enter") {
    return func1();
    }
});

btn.addEventListener("click", () => {
    return func1();
});

var func1 = function() {
    const word = document.getElementById('input-word');

    var resultText;
    if(word.value.trim().length){
        resultText = word.value + "の検索結果は以下の通りです.";
    } else {
        resultText = "何も入力されていないです.";
    };

    let result = document.getElementById('result');
    result.innerHTML = resultText;
}

上記コードをコピペして試してみてください.


次の記事を参考にしました. How to Press Enter Key Programmatically in JavaScript

記事一覧に戻る