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

設問名がないラジオボタンとチェックボックスのグループ

購入手続きでは各選択肢の上に太字で設問がありますが、設問と選択肢がコードで結び付いていないため、スクリーンリーダーは設問なしで「はい、ラジオボタン」と読み上げます。

WCAG 2.2
SC 1.3.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり
何に「はい」?
アクセシビリティの問題を示した図。
01

問題

スクリーンリーダーの利用者には「はい」や「お急ぎ便」は聞こえても、何の設問への答えかが分かりません。

02

試してみる

Tabキーで各設問に入り、はいといいえの間は矢印キーで移動してください。

見た目はどちらも同じです。フォームの下で、スクリーンリーダーに設問まで聞こえるか、答えだけかを確認してください。

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

不在時は置き配する?

お知らせの受け取り方法

スクリーンリーダーの読み上げ (Tabで設問へ移動)

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

03

修正方法

設問をグループの名前にします。fieldsetとlegendか、設問を指すグループのロールを使います。

  1. 1ラジオボタンのまとまりと、一つの設問に答えるチェックボックスのまとまりを、マークアップでグループにする。
  2. 2グループの名前は、legendかaria-labelledbyで、画面に書かれた設問にする。
  3. 3グループの名前に加えて、各選択肢にもそれぞれのラベルを残す。
修正前 選択肢の上にあるただのテキストの設問
<p class="question">不在時は置き配する?</p><div class="options">  <input id="leave-yes" type="radio" name="leave" value="yes">  <label for="leave-yes">はい</label>  <input id="leave-no" type="radio" name="leave" value="no">  <label for="leave-no">いいえ</label></div> <p class="question">お知らせの受け取り方法</p><div class="options">  <input id="by-email" type="checkbox" name="updates" value="email">  <label for="by-email">メール</label>  <input id="by-text" type="checkbox" name="updates" value="text">  <label for="by-text">SMS</label></div>
修正後

Fieldsetとlegend

<fieldset class="options">  <legend class="question">不在時は置き配する?</legend>  <input id="leave-yes" type="radio" name="leave" value="yes">  <label for="leave-yes">はい</label>  <input id="leave-no" type="radio" name="leave" value="no">  <label for="leave-no">いいえ</label></fieldset> <fieldset class="options">  <legend class="question">お知らせの受け取り方法</legend>  <input id="by-email" type="checkbox" name="updates" value="email">  <label for="by-email">メール</label>  <input id="by-text" type="checkbox" name="updates" value="text">  <label for="by-text">SMS</label></fieldset>

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

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得

04

修正の確認

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

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

4件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。グループ名をどの程度繰り返すかはスクリーンリーダーによって異なり、最初の選択肢でだけ読むものもあります。divで作った独自のラジオボタンには、矢印キーや状態を含むラジオボタンのパターン全体が必要ですが、このガイドでは扱いません。外部ウィジェットや決済用のiframe内のグループも同じように確認してください。実際に使用する支援技術で、操作全体を確認してください。

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

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

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

再テストの進め方