0Pricing
JavaScript Academy · レッスン

submit イベント

フォーム送信を処理し、ページの再読み込みを防ぎます。

「submit イベント」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全4レッスンが含まれています。

フォームの送信

フォームが送信されると、送信ボタンのクリックでもフィールド内でのEnterキー入力でも、submitイベントが発生します。フォームデータを処理するのに適した場所です。

フォームでイベントを監視する

リスナーは送信ボタンではなくform要素自体に取り付けます。これにより、すべての送信経路に対応できます。

const form = document.querySelector("#signup");
form.addEventListener("submit", (e) => {
  console.log("submitting");
});

デフォルトの再読み込み

デフォルトでは、フォームを送信するとページが移動または再読み込みされます。JavaScriptで動作するアプリでは、通常これをキャンセルします。

form.addEventListener("submit", (e) => {
  e.preventDefault();
});

ここでpreventDefaultを使う理由

preventDefaultを呼び出すとページをそのまま維持できるため、自分でデータを検証して送信できます。送信にはfetchを使うことがよくあります。

form.addEventListener("submit", (e) => {
  e.preventDefault();
  const data = new FormData(form);
  // send data without reloading
});

送信ボタン

type="submit"のbutton(フォーム内でのデフォルト)は送信を開始します。送信しないボタンにはtype="button"を使います。

Enterキーによる送信

1行のテキストフィールドでEnterキーを押すとフォームが送信されます。そのため、フォーム自体でイベントを監視することが重要です。

requestSubmit

form.requestSubmitはプログラムから送信しながら、submitイベントの発生とバリデーションの実行も行います。一方、form.submitはその両方をスキップします。

form.requestSubmit(); // fires submit event + validates
// form.submit(); // bypasses validation and the event

送信時のデータの読み取り

ハンドラー内でフォームからFormDataを作成すると、名前付きフィールドをすべて簡潔に収集できます。

form.addEventListener("submit", (e) => {
  e.preventDefault();
  const fd = new FormData(form);
  const obj = Object.fromEntries(fd.entries());
  console.log(obj);
});

ボタンを無効にする

二重送信を防ぐには、処理中は送信ボタンを無効にし、処理が終わったら再び有効にします。

form.addEventListener("submit", (e) => {
  e.preventDefault();
  const btn = form.querySelector("[type=submit]");
  btn.disabled = true;
});

フォームをリセットする

form.resetはフィールドをデフォルト値に戻して消去します。また、resetイベントを使うとリセットに応答できます。

form.addEventListener("reset", () => {
  console.log("cleared");
});

Submitter要素

submitイベントのsubmitterプロパティは、どのボタンが送信を開始したかを示します。フォームに複数の送信ボタンがある場合に便利です。

form.addEventListener("submit", (e) => {
  console.log(e.submitter && e.submitter.value);
});

クイックチェック

最適な方法を選んでください。

まとめ

送信はフォームのsubmitイベントで処理し、JavaScriptで動作するアプリではpreventDefaultを呼び出します。Enterキーによる送信も捕捉できるよう、ボタンではなくフォームでイベントを監視します。フィールドの読み取りにはFormData、バリデーション付きのプログラム送信にはrequestSubmitを使い、二重送信を防ぐためにボタンを無効にします。

よくある質問

「submit イベント」レッスンは無料ですか?

はい。「submit イベント」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全4レッスンが含まれています。

「submit イベント」で何を学びますか?

フォーム送信を処理し、ページの再読み込みを防ぎます。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

JavaScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「submit イベント」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJavaScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 入力値を読み取る
  2. submit イベント
  3. クライアントサイドバリデーション
  4. Constraint Validation API
← JavaScript Academyに戻る