HTML
📝 フォームバリデーションが効かない
formタグの外にinputがある
😰 こんな症状
required属性を付けたのに空欄で送信できてしまう。フォームバリデーションが効かないときに起きるよ。
🔍 原因
HTMLのフォームバリデーション(required等)が効かない原因は主に2つ。1つはinput要素がform要素の外にある場合、もう1つはJavaScriptでsubmitイベントにpreventDefault()が呼ばれていてブラウザのバリデーションが発動しない場合だよ。formタグにnovalidate属性が付いている場合もバリデーションが無効になるよ。
❌ エラーが起きるコード
<form novalidate><input required><button>送信</button></form>
<!-- novalidate で無効 --> ✅ 直し方
1. input要素が<form>タグの中にあるか確認する。 2. formタグにnovalidate属性が付いていないか確認する。 3. JavaScriptでフォーム送信を制御している場合はform.checkValidity()を呼んでバリデーションを手動実行する。 4. reportValidity()を使うとエラーメッセージも表示されるよ。
✅ 修正後のコード
<form><input required><button type="submit">送信</button></form> この解決法は役立ちましたか?
🔗 関連するエラー
- フォームの送信ボタンが動かない — type="submit" の書き忘れ
- formが送信されない — action属性やmethod属性が未設定
- input要素のtype属性ミスで入力欄が意図通りにならない — type属性のスペルミス
- buttonクリックでページがリロードされる — form内のbuttonがデフォルトでsubmitになる
- loading="lazy"が効かない — ファーストビューの画像に指定している
🔗 別カテゴリの関連エラー
📖 この問題を学べるレッスン
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- HTMLとは?初心者向けにわかりやすく解説 — タグの書き方・ページ構造の基本
- HTMLのパス(相対パス・絶対パス)の書き方 — パスの書き方を初心者向けに解説