テック技報最新号へ →
デザイン

送信ボタンは押した直後に「送信中…」へ変えて押せなくし、二度押しと不安を防ぐ

押しても何も変わらないと「送れた?」と不安になって連打され、多重送信の原因になる。押した瞬間に文言と状態を変えるだけで両方防げる。

@wokobo_net · 2026-10-20
#UI#フォーム#ボタン#フィードバック#マイクロコピー#アクセシビリティ

どんな問題を解決するか / いつ使うか

問い合わせ・申し込み・決済・コメント投稿など、送信に1秒以上かかるフォーム全般。サーバーの応答待ちの間にボタンが元のままだと、利用者は反応がないと感じて二度押しし、同じ問い合わせが2通届く・二重に申し込まれるといった問題が起きる。

やり方

  1. 押した瞬間にボタンの文言を「送信中…」に変える(スピナーを添えてもよい)。
  2. 同時にボタンを押せない状態にする。disabled を付けるか、aria-disabled="true" にしてスクリプト側で二度目の送信を無視する。
  3. 読み上げ環境にも伝わるよう、aria-busy="true" を付けるか、近くの aria-live="polite" の領域に「送信しています」と出す。
  4. 成功したら「送信しました」と次にすることを表示し、失敗したらボタンを元に戻して、理由とやり直し方を1行で出す。
html
<button type="submit" id="send">送信する</button>
<p id="status" aria-live="polite"></p>
<script>
  form.addEventListener('submit', () => {
    send.disabled = true;
    send.textContent = '送信中…';
    status.textContent = '送信しています';
  });
</script>

注意点

出典

X の元の投稿を開く