FORM SUBMISSION LAB

submit() vs requestSubmit()

どちらも送信。でも、通る経路が違います。

BASELINE WIDELY AVAILABLE
02

LIVE COMPARISON

同じフォーム、違う送信経路

SAME FORM
DIRECT

form.submit()

送信だけ実行
01

入力チェックconstraint validation

未実行
02

submitイベントsubmit event

未発火
03

送信ボタン情報event.submitter

なし
RESULT実行待ち
BUTTON FLOW

form.requestSubmit()

クリック相当
01

入力チェックconstraint validation

待機中
02

submitイベントsubmit event

待機中
03

送信ボタン情報event.submitter

待機中
RESULT実行待ち
FORM STATEEMPTY
SAFE DEFAULTrequestSubmit()
SUBMITTER
LAST RESULTREADY
03

DECISION GUIDE

ボタンを押した流れにそろえる

01

入力を検証required / type / pattern

02

イベントを発火submitで処理を受け取る

03

ボタンを識別event.submitterで取得

RECOMMENDED

通常のフォーム送信をJavaScriptから始めるなら、

form.requestSubmit(button)
JAVASCRIPT RECIPE

2つの経路を比較する

const form = document.querySelector("form");
const button = form.querySelector("[type='submit']");

// 検証とsubmitイベントを通らない
form.submit();

// 送信ボタンを押したときと同じ流れ
form.requestSubmit(button);