HTML|お問い合わせフォーム作成時の必須設定の仕方と効かない場合のチェックリスト

  • 投稿日:
  • by
  • カテゴリ:

HTML5からrequired属性が追加されている。使い方はカンタンで、<input>タグなどに属性を付与するだけ。

例)
<input type="text" required>
又は
<input type="text" required="required">

【余談】
今回、別のフォームからコピペして、required属性を付与して新しいフォームを作成したところ、このrequired属性が効かなかった。原因は元のフォームに「novalidate」属性がついていたこと。

他にも、下記の場合に効かないケースがある。Copilot先生の作ってくれたチェックリストを参考まで。

1. フォームが `<form>` タグで囲まれていない
- `required`はフォーム送信時にバリデーションされるため、`<form>`タグがないと機能しません。
- 対処:必ず`<form>`タグで囲み、`<input>`や`<select>`などをその中に配置。

2. `type="submit"` のボタンが使われていない
- JavaScriptで送信している場合、ブラウザのネイティブバリデーションがスキップされることがあります。
- 対処:`<button type="submit">`を使うか、JS送信前に`form.checkValidity()`で手動バリデーション。

3. `novalidate`属性がフォームに付いている
- これがあると、すべてのHTML5バリデーションが無効になります。
- 対処:`<form novalidate>`を削除。

4. JavaScriptで送信を強制している
- `form.submit()`を使うと、バリデーションをバイパスします。
- 対処:`form.submit()`ではなく、`form.requestSubmit()`や`form.checkValidity()`を使う。

5. `input`タグの構文ミス
- `required`のスペルミスや閉じタグの不備など。
- 例:`<input requiredd>` → 効かない
- 対処:HTML構文を検証ツール(例:W3C Validator)でチェック。

6. `display: none` や `visibility: hidden` が使われている
- 非表示のフィールドにはバリデーションがかからないことがあります。
- 対処:必要なら`aria-hidden`や`hidden`属性の使い方を見直す。

7. ブラウザの互換性や拡張機能の干渉
- 古いブラウザや拡張機能がバリデーションを妨げることも。
- 対処:別ブラウザでテスト、拡張機能を無効化して確認。