ちょっと良いUIおれおれAdvent Calendar 2024 – 11日目
普通にフォームをマークアップすれば Enter キーで送信できるようになるんですが、なんかそうなってない場合があります。しときましょう。
デモ:
<form> で括る
Enter キーで送れるようにするには、単に <form> 要素で括るだけです。簡単です。やらない理由がない。
JavaScript からは submit イベントを使う
ボタンのクリックではなくフォーム送信 submit のイベントを使います。ボタンはイベント管理する必要ありません。
JS で全部管理する場合は HTML レベルでの送信を event.preventDefault() で止めます。
逆に送信しないボタンは type="button" にする
フォーム内のボタンは勝手に送信ボタン化します。抑制したい場合は type="button" を与えて、送信しないよって明示する必要があります。ちなみに送信の明示は type="submit" です。
FormData で入力値をまとめて取る
ちなみに DOM としてフォーム全体の入力値をまとめて取るには FormData が便利です。
const form = document.querySelector('form');
const formData = new FormData(form);
for (const [name, value] of formData.entries()) {
  console.log(name, value);
}
チェックボックスのように同じ name が複数あるものかどうかは自分で判断する必要があります。まあ些事ですが。
おしまい
Enter キー使えないと不便なんでよろしくお願いします。誤送信が怖いときは確認画面出したり JS で確認出したりしてください。
 
          