← エラー辞典に戻る

HTML

buttonクリックでページがリロードされる

form内のbuttonがデフォルトでsubmitになる

こんな症状

form内のbuttonにtype属性を指定しないとページがリロードされる。ボタンクリックで意図しないリロードが起きるときはこれが原因だよ。

まず試す

送信しないボタンには type="button" を明示する。

html
<button type="button">キャンセル</button>

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

🔍 自分のケースはどれ?

  • キャンセル等のボタンでリロードされる
    → type="button" を付ける(送信目的でないボタン)。
  • 送信ボタンのつもり
    → type="submit" を明示する(省略でもsubmitだが明示が安全)。
  • JSで処理したいだけ
    → type="button" にし、必要なら onclick で処理する。

なぜ起きる?

form内の<button>はtype属性を省略するとデフォルトでtype="submit"になるよ。そのため、クリックするとフォームが送信されてページがリロードされてしまうんだ。送信目的でないボタン(キャンセルボタン等)にはtype="button"を明示する必要があるよ。

✕ エラーが起きるコード
<button>キャンセル</button>
<!-- type 未指定で submit になる -->
✓ 直したコード
<button type="button">キャンセル</button>

✅ 直ったか確認

ボタンを押してもページがリロードされず、意図した動作だけ起きればOK。

🆘 まだ直らないときは

どうしても送信を止めたいときは JS で e.preventDefault() する方法もあるが、type 指定の方がシンプル。

Q&Aで質問する →

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

🔗 関連するエラー

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

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

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

✏️ 手を動かして練習

練習ドリル一覧で実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

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

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

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

❓ 関連するQ&A