適用 (対象)
利用者の入力が必須の項目があるコンテンツ
これは、次の達成基準に関連する達成方法である:
- 達成基準 3.3.1: エラーの特定 (十分な達成方法)
- 達成基準 3.3.2: ラベル又は説明 (G131: 説明的なラベルを提供するの達成方法として十分)
- 達成基準 3.3.3: エラー修正の提案 (十分な達成方法)
- 達成基準 4.1.3: ステータスメッセージを理解する (ARIA19: エラーを特定するために、ARIA role=alert 又はライブリージョン (Live Regions) を使用するの達成方法として十分)
解説
この達成方法の目的は、入力しなければならないフィールドが未入力である場合に利用者に通知することである。利用者が必須のフォームフィールドへの入力に失敗した場合、どのフィールドを入力し忘れたのかを利用者に特定できるように、情報をテキストで提供する。一つのアプローチとして、クライアントサイドでのバリデーションを用いて、入力し忘れた必須フィールドを特定するアラートダイアログボックスを提供する方法がある。もう一つのアプローチとしては、サーバーサイドでのバリデーションを用いて、入力し忘れた必須フィールドの場所にテキストでの説明を入れるか、テキストでの説明文によって入力し忘れたフィールドを特定するかのいずれかで、フォーム (すでに入力されたデータも含む) を再表示する方法がある。
エラーが起きたことに気づかぬまま、フォームが正常に機能していないと仮定する利用者もいるので、メッセージ又はアラートを含めるのがベストプラクティスである。また、ページタイトル (title
要素) にエラーを含めるのも、ベストプラクティスである。なぜならスクリーンリーダーの利用者は、ページが正常に送信されたと考え、そのページのメインコンテンツ領域を再度読むのではなく、新しいページが返ってくるとすぐに別のページにナビゲートし続ける可能性が高いためである。
事例
- 利用者がフォームを送信しようとするが、一つ以上の必須フィールドで入力を提供する又は選択肢を選択し忘れている。クライアントサイドでのバリデーションを使用して、この入力漏れが検出されると、必須フィールドが未入力であることを利用者に通知するアラートダイアログが表示される。この問題のあるフィールドのラベルは、問題のあるフィールドを特定するために変更され、送信ボタンの後にその問題のあるフィールドへのリンクが文書内に挿入されるので、利用者はアラートを閉じた後にその問題のあるフィールドへ移動できる。
- 利用者がフォームを送信しようとするが、一つ以上の必須フィールドで入力を提供する又は選択肢を選択し忘れている。サーバーサイドのバリデーションを使用して、この入力漏れが検出されると、どの必須フィールドが漏れたかを通知するテキストの説明が上部に表示され、フォームが再表示される。入力が漏れた各必須フィールドはまたテキストラベルを使用して特定されるため、利用者は入力が漏れたフィールドを見つけるためにフォームの上部にあるリストに戻る必要はない。
-
利用者が、必須フィールドのあるフォームを記入している。フィールドのラベルは、必須かどうかを示している。利用者が必須フィールドへタブ移動し、データ入力や選択をせずにそのフィールドからタブ移動する。クライアントサイドのスクリプトは、フィールドのラベル部分を変更して、そのフィールドを空白のままにしておくことがエラーであることを示す。
注記スクリーンリーダーの中には、ラベルの変更に気付かず、変更を通知しないものがあるため、スクリーンリーダーの利用者はエラーに気がつかないことがある。
検証
手順
- 一つ以上の必須フィールドへの入力を意図的に空白のままにして、フォームを記入して送信する。
- 未入力のままになっている必須フィールドを特定するテキストによる説明が提供されていることを確認する。
- 再表示のためにデータを保持することが不適切なセキュリティに関連するフィールドにデータ (例: パスワード) がない限り、利用者によって入力済みの他のデータが再表示されていることを確認する。
期待される結果
- 2. 及び 3.の結果が真である。