本文へ移動
ご相談
トピックを検索

色だけで示された必須項目

予約フォームが必須項目のラベルを赤くしているだけで、言葉も記号もrequired属性もないため、色が見えてその意味を推測できる人にしか、どの欄が必須か分かりません。

問題あり
必須?どこにも書いていない。
アクセシビリティの問題を示した図。
01

問題

赤色が見えない人や、その意味を知らない人は、フォームが差し戻されて初めて、どの欄が必須だったかを知ります。

02

試してみる

どの欄を入力する必要がありますか?考えてから、Tabキーでフォームを移動してください。

グレースケールをオンにすると、色のないフォームを確認できます。下の欄で、スクリーンリーダーが「必須」と読み上げるか確認してください。

問題あり 直してみませんか?

スクリーンリーダーの読み上げ

(Tabで入力欄へ移動)

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

ラベルに言葉で書き、同じ欄にrequired属性を付けます。

  1. 1どの欄が必須かを、ラベル内か最初の欄より前の説明で、見えるテキストとして示す。
  2. 2必須の欄すべてに、そしてそれだけにrequired属性を付ける。
  3. 3色、太字、プレースホルダーだけを印にしない。
修正前 色だけで示した必須項目
<style>  .is-required { color: #b3261e; }</style> <label for="name" class="is-required">お名前</label><input id="name" name="name" type="text" autocomplete="name"> <label for="email" class="is-required">メールアドレス</label><input id="email" name="email" type="email" autocomplete="email"> <label for="phone">電話番号</label><input id="phone" name="phone" type="tel" autocomplete="tel"> <label for="diet">食事の制限</label><input id="diet" name="diet" type="text">
修正後

必須の欄のラベルに「必須」と書く

<label for="name">お名前 <span class="req">(必須)</span></label><input id="name" name="name" type="text" autocomplete="name" required> <label for="email">メールアドレス <span class="req">(必須)</span></label><input id="email" name="email" type="email" autocomplete="email" required> <label for="phone">電話番号</label><input id="phone" name="phone" type="tel" autocomplete="tel"> <label for="diet">食事の制限</label><input id="diet" name="diet" type="text">

04

修正の確認

マウスを使わない4つの確認

確認方法: キーボード、スクリーンリーダー、ズーム

4件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。フォームに欄を追加したときや、共通の入力欄コンポーネントを変更した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。入力前にどの欄が必須かを知る方法を扱い、送信後のエラーメッセージは扱いません。日付の順序や郵便番号の形式のような書式も説明の一つで、それぞれにテキストが必要です。外部ウィジェットやコンテンツ編集者が作ったフォームも同じように確認してください。実際に使用する支援技術で、操作全体を確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方