1. ホーム
  2. javascript

[解決済み] Enterキーが押されたときにフォームを送信しないようにする

2022-03-14 11:48:02

質問

私は form には2つのテキストボックスがあり、1つは 選択 ドロップダウンと ラジオボタン . このとき 入力 キーが押されたときに、JavaScript の関数を呼び出したいのですが、キーを押したときに form が送信されます。

を防ぐにはどうしたらいいのでしょうか? form が送信されたときに 入る キーが押されましたか?

解決方法は?

if(characterCode == 13)
{
    return false; // returning false will prevent the event from bubbling up.
}
else
{
    return true;
}

では、あるフォームに次のようなテキストボックスがあるとします。

<input id="scriptBox" type="text" onkeypress="return runScript(event)" />

エンターキーが押されたときに、このテキストボックスからユーザー定義のスクリプトを実行し、フォームを送信させないようにするには、以下のようにします。 サンプル のコードで説明します。この関数はエラーチェックをしないので、おそらくIEでしか動作しないことに注意してください。これを正しく実行するには、より堅牢なソリューションが必要ですが、一般的なアイデアは得られるでしょう。

function runScript(e) {
    //See notes about 'which' and 'key'
    if (e.keyCode == 13) {
        var tb = document.getElementById("scriptBox");
        eval(tb.value);
        return false;
    }
}

この関数の値を返すと、イベントハンドラはイベントをこれ以上バブル化しないように警告し、キー押下イベントがこれ以上処理されないようにします。

注意

指摘されているのは keyCode 現在では非推奨 . 次善の策として which があります。 も非推奨となりました。 .

残念ながら、有利な標準 key は、最近のブラウザで広くサポートされていますが、一部の IEとEdgeでおかしな挙動をする . IE11 よりも古いものは、やはり ポリフィル .

さらに、非推奨の警告はかなり不吉なものですが keyCodewhich そのため、これらを削除すると、膨大な数のレガシーサイトに大きな変更を加えることになります。そのため すぐにどこかに行ってしまうことはないでしょう。