本文へ移動
ご相談

ラベルがない・表示と食い違うフォームの入力欄

配送先フォームはラベル付きに見えますが、一つはただのテキスト、一つは違うIDを指すlabel、一つは別の言葉のaria-labelで、見えている言葉が欄の名前になっていません。

SC 1.3.1ASC 2.5.3ASC 3.3.2A エージェント向けMarkdown
問題あり ラベルに見えるが、違う。
修正後 ラベルが欄の名前になる。
同じ操作部品の、修正前と修正後。
01

問題

どの欄にもラベルがあるように見えるのに、スクリーンリーダーや音声操作の利用者には、どの欄が何か分かりません。

02

試してみる

各ラベルをクリックしてから、Tabキーで入力欄を移動してください。

見た目はどちらも同じです。ラベルをクリックすると、その欄に入れますか?フォームの下で、見えるラベルとスクリーンリーダーが読む名前を比べてください。

お名前
電話番号
画面のラベル
—
スクリーンリーダーの読み上げ
(Tabで入力欄へ移動)

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

03

修正方法

見えている言葉を欄の名前にします。label要素か、見えるテキストへのaria-labelledbyを使います。

  1. 1すべての欄に、値が入っている間も表示されるラベルの文言がある。
  2. 2その見える文言を、label要素かaria-labelledbyで欄のアクセシブルな名前にする。
  3. 3見えるラベルと違う言葉のaria-labelを付けない。
修正前 ラベルに見えるが、ラベルではないテキスト
<div class="field-title">お名前</div><input name="name" type="text"> <label for="post-code" class="field-title">郵便番号</label><input id="postcode" name="postcode" type="text"> <div class="field-title">電話番号</div><input name="phone" type="tel" aria-label="連絡先">
修正後

Label要素

<label for="name">お名前</label><input id="name" name="name" type="text" autocomplete="name"> <label for="postcode">郵便番号</label><input id="postcode" name="postcode" type="text" autocomplete="postal-code"> <label for="phone">電話番号</label><input id="phone" name="phone" type="tel" autocomplete="tel">

この方法を選ぶ理由:まずHTMLの要素を使う

04

修正の確認

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

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

4件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。ラジオボタンのようなグループにはfieldsetとlegendも必要ですが、このガイドでは扱いません。外部ウィジェット、決済用のiframe、コンテンツ編集者が追加した欄も同じように確認してください。実際に使用する支援技術で、操作全体を確認してください。

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

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

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

再テストの進め方