Skip to content

fix(v1.0): form バリデーションを browser native に統一(novalidate 削除、custom error 要素削除)#124

Merged
shunei-web merged 1 commit into
v1.2from
fix/v1.0-form-browser-validation
Apr 23, 2026
Merged

fix(v1.0): form バリデーションを browser native に統一(novalidate 削除、custom error 要素削除)#124
shunei-web merged 1 commit into
v1.2from
fix/v1.0-form-browser-validation

Conversation

@shunei-web
Copy link
Copy Markdown
Collaborator

Summary

form の novalidate 属性と JS 前提の custom error elements(<p class="c-form__error"> × 7)、aria-describedby 参照を削除し、HTML5 ブラウザネイティブバリデーションに統一する。

Why

  • 現状: novalidate でブラウザ検証無効化 + JS バリデーション未実装 → 送信ボタン押下で画面遷移(バグ)
  • starter ではカスタムバリデーションを実装しない方針(しゅんえい判断、2026-04-23)
    • シンプル志向 + 教材性優先
    • 実案件でカスタム UX が必要な場合はユーザー(開発者)が個別実装
  • required / type="email" 等は保持、ブラウザが native で検証・エラー表示

変更

  • <form novalidate><form>(1 箇所)
  • L629 の JS 前提コメント(aria-describedby / hidden / aria-invalid 切替案内)削除
  • <p id="xxx-error" class="c-form__error" role="alert" hidden> 削除(7 箇所)
  • aria-describedby="xxx-error" 削除(7 箇所)
  • .c-form__error { ... } CSS ルール削除

保持

  • HTML5 native バリデーション(required, type="email", type="tel"
  • フォーム構造(c-form__field / c-form__label / c-form__input / c-form__choice-group 等)
  • p-contact__form Element 併記
  • --color-error 変数(required マーク・:user-invalid で引き続き使用)

機械走査

チェック項目 結果 期待
novalidate 残存 0 0 ✅
c-form__error (HTML) 0 0 ✅
c-form__error (CSS) 0 0 ✅
aria-describedby (form 関連) 0 0 ✅
required 保持 6 6 ✅
type="email" 1 1 ✅
type="tel" 1 1 ✅

※ 仕様書の「期待: 7」はリスト本文(6 項目)と乖離した誤記。実際の required 数は 6 が正しい。

Test plan

  • pnpm run check 通過(prettier / stylelint / eslint / markuplint 全通過)
  • pnpm run build 成功
  • 機械走査(全指標 ✅)
  • ブラウザで空送信テスト → native エラー表示確認
  • ブラウザで email 不正テスト → native エラー表示確認
  • ブラウザで全入力送信 → POST 実行確認(/api/contact 未実装のため 404 遷移が期待動作)
  • Cloudflare Pages preview pass

🤖 Generated with Claude Code

…r 要素削除)

- <form novalidate> → <form>(novalidate 属性を削除)
- L629 の JS 前提コメント(aria-describedby / hidden / aria-invalid 切替案内)を削除
- <p class="c-form__error" role="alert" hidden> × 7 を全削除
- aria-describedby="xxx-error" × 7 を全削除
- .c-form__error { font-size / color-error } CSS ルールを削除
- HTML5 native バリデーション(required / type="email" / type="tel")は保持

starter ではカスタムバリデーションを実装しない方針(しゅんえい判断、2026-04-23)。
シンプル志向 + 教材性優先。実案件でカスタム UX が必要な場合はユーザーが個別実装。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying starter with  Cloudflare Pages  Cloudflare Pages

Latest commit: 41204df
Status: ✅  Deploy successful!
Preview URL: https://c61f6fcf.starter-20t.pages.dev
Branch Preview URL: https://fix-v1-0-form-browser-valida.starter-20t.pages.dev

View logs

@shunei-web shunei-web merged commit df28c56 into v1.2 Apr 23, 2026
1 check passed
@shunei-web shunei-web deleted the fix/v1.0-form-browser-validation branch April 23, 2026 04:51
shunei-web added a commit that referenced this pull request Apr 23, 2026
しゅんえい指摘(2026-04-23)の 404 対応漏れ修正、README の古い記述更新、
AR v1.0 リリース後扱いだった採用項目を繰り上げて同 PR で対応(8 件)。

- 404.html: CUSTOMIZE コメントを「カスタマイズして使う」方針に統一(#1)
- 404.html: head 順序を PR #145 と同じ Google Web Fundamentals 順に整列(#2)
- README: novalidate 削除(PR #124 実装との整合)(#3)
- README: 404.html 説明を「削除推奨」→「カスタマイズして使う」(#4)
- README: 「## 設計判断の詳細」セクション追加(spec 無料 + 書籍)(#5)
- 404.html: heading を <hgroup> + __eyebrow + __title に統一(採用 20)(#6)
- 全 3 HTML: theme-color に media 属性付きで light / dark 両対応(採用 17)(#7)
- index.html: "min" に lang="en" 付与 WCAG 3.1.2(採用 19)(#8)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
shunei-web added a commit that referenced this pull request Apr 30, 2026
- 全 7 フィールドに aria-describedby + role="alert" エラー要素配置
- form に novalidate 追加(JS 完全制御のため、ブラウザ tooltip を抑制)
- c-form__error CSS スタイル復活(font-size + color)
- main.js に initFormValidation() 関数追加:
  - HTML5 checkValidity() + validationMessage でブラウザロケール準拠エラー文言
  - fieldset(plan)は制約検証対象外のため内部 required input を代替検査
  - submit 時: エラー表示 + aria-invalid + 最初エラーフィールドへ focus + scrollIntoView
  - input/change 時: 復帰でエラー解除 + aria-invalid 削除
- WCAG 2.2 SC 3.3.1(A)/ 3.3.3(AA)完全達成

しゅんえい判断(2026-05-01 セッション 33): 何度も指摘される観点 = リファレンス実装必須要件。
PR #124(2026-04-23 シンプル志向)の方針を反転。

Closes #195

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant