← エラー辞典に戻る

HTML

フォームの送信ボタンが反応しない(buttonのtype属性)

ボタンとformの紐づきに問題がある

こんな症状

送信ボタンを押しても何も起きない。buttonのtype属性、ボタンとformの位置関係、JavaScript側のエラーの3つを順に確認すれば原因がわかるよ。

まず試す

ボタンを type=submit にし、<form> の中に置く(外に置くなら form 属性で form の id を指定)。

html
<form action="/send">
  <input name="email" type="email">
  <button type="submit">送信</button>
</form>

これで直らなければ、下の「自分のケース」を確認。

🔍 自分のケースはどれ?

  • ボタンが type=button になっている
    → type=submit にする(form内の button は既定で submit)。
  • ボタンが form の外にある
    → form の中に入れる。外に置くなら <button type="submit" form="フォームのid">。
  • 押しても無反応(JSエラー)
    → F12のConsoleで赤いエラーが出ていないか確認する。preventDefault() で止めていないかも見る。

なぜ起きる?

原因は3系統あるよ。(1) buttonのtype属性:<button>は<form>内ではデフォルトでsubmitとして動くけど、type="button"と書かれていると送信しない。<input type="button">も同様。 (2) 位置関係:ボタンが<form>タグの外にあると送信をトリガーできない。 (3) JavaScript:submitイベントでpreventDefault()している、またはonclickの処理がエラーで止まっている場合も「押しても無反応」に見えるよ(Consoleに赤いエラーが出ていないか確認)。

✕ エラーが起きるコード
<form action="/send">
  <input name="email" type="email">
</form>
<!-- ❌ formの外 + type="button" -->
<button type="button">送信</button>
✓ 直したコード
<form action="/send">
  <input name="email" type="email">
  <button type="submit">送信</button>  <!-- ✅ form内 + type=submit -->
</form>

✅ 直ったか確認

送信ボタンで Networkにリクエストが出る、または期待した遷移が起きればOK。

🆘 まだ直らないときは

JSで送信を止めているなら、処理の最後に form.requestSubmit() を呼ぶか preventDefault() を外す。

Q&Aで質問する →

この解決法は役立ちましたか?

🔗 関連するエラー

🔗 別カテゴリの関連エラー

📖 この問題を学べるレッスン

HTMLレッスン5:フォームを作ろうで根本から理解する →

✏️ 手を動かして練習

このテーマの図解ドリルで実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

🚀 HTMLレッスン5:フォームを作ろうで根本解決しよう!

このエラーの背景にある仕組みを、手を動かしながら学べるレッスンがあります。完全無料・登録不要。

HTMLレッスン5:フォームを作ろうへ →

❓ 関連するQ&A