WCAG 2.0 実装方法集

メインコンテンツへスキップ

-

H44: label要素を用いて、テキストのラベルとフォーム・コントロールを関連付ける

適用(対象)

ラベルを用いているHTML及びXHTMLのフォーム・コントロール

これは、次の達成基準に関連する実装方法である:

ユーザーエージェント及び支援技術によるサポート

HTML及びXHTML仕様書では、暗示的なラベルと明示的なラベルの両方を認めている。しかし、支援技術の一部は、暗示的なラベル(たとえば、<label>First name <input type="text" name="firstname"></label>)を正確に処理できない。【訳注:なお、暗示的なラベルとは、ラベルとフォーム・コントロールを単にlabel要素で囲んだだけのものである。一方、明示的なラベルとは、label要素のfor属性に、フォーム・コントロールのid属性値と同じ値を指定することで、両者を明確に関連付けたものである。】

ユーザーエージェントは、title属性が指定してあるinput要素にマウスオーバーしたときに、ツールチップを表示するようである。支援技術はtitle属性を抽出し、多くのグラフィカルブラウザはtitle属性をツールチップで表示する。ただし、キーボード操作ではツールチップを開けないため、視力はあるがマウスではなくキーボードを使っている利用者は、現状ではツールチップの情報を利用できない恐れがある。

JAWSとWindow-Eyesでは、フォーム・コントロールがフォーカスを受けたとき、もしラベルが指定されていなければ、title属性を読み上げる。

解説

この実装方法の目的は、フォーム・コントロールとラベルを明示的に関連付けるために、label要素を利用することである。ラベルは、label要素のfor属性によって特定のフォーム・コントロールと結びつけることができる。この場合、for属性値はフォーム・コントロールのid属性値と同じでなければならない。

id属性がname属性と同じ値で、両方とも指定しなければならない場合でも、そのidはそのウェブページ内で一意的なものとして、重複して使用してはならない。

この実装方法は、label要素が見えているかどうか、つまりCSSで非表示にしているかどうかに関わらず、達成基準 1.1.1、1.3.1、4.1.2を満たすことができる。しかし、達成基準 3.3.2では、label要素を入力フィールドの理解に役立てたい全ての利用者のために、見える状態にしておかなければならない、としている。

input要素のtype="checkbox"type="radio"では、label要素をその後に配置することに注意する。

注記 1:明示的なラベルを利用する要素は次の通りである:

注記 2:次の場合には、label要素は利用しない。これらの要素に対するラベルは、value属性(送信ボタン及びリセットボタン)、alt属性(画像ボタン)、又は要素それ自体の内容(汎用ボタン)を介して提供されるからである。

事例

事例 1:テキスト入力フィールド

この事例では、テキスト入力フィールドに「お名前」という明示的なラベルが付けてある。label要素のfor属性値は、input要素のid属性値と一致している。

コード例:


<label for="firstname">お名前:</label> 
<input type="text" name="firstname" id="firstname" />

事例 2:チェックボックス

コード例:

<input type="checkbox" id="markuplang" name="computerskills" checked="checked">
<label for="markuplang">HTML</label>

事例 3:ラジオボタンのグループ

関連するラジオボタンの小さなグループについて、簡単な説明が付けてあり、さらに個々の要素にラベルが付けてある。

注記:ラジオボタンの数が多く、それらの関連付けや操作説明を必要とする場合は、H71: Providing a description for groups of form controls using fieldset and legend elements の方法を考慮すべきである。

コード例:

 <h1>ドーナツ</h1>

<p>お好きなドーナツを選び、「ドーナツを購入」ボタンを
    押してください。</p>

<form action="http://example.com/donut" method="post">
<p>
  <input type="radio" name="flavor" id="choc" value="chocolate" />
    <label for="choc">チョコレート</label><br/>
  <input type="radio" name="flavor" id="cream" value="cream"/>
    <label for="cream">クリーム入り</label><br/>
  <input type="radio" name="flavor" id="honey" value="honey"/>
    <label for="honey">ハニーがけ</label><br/>
  <input type="submit" value="ドーナツを購入"/>
</p>
</form>

参考リソース

この参考リソースは、あくまでも情報提供のみが目的であり、推薦などを意味するものではない。

検証

チェックポイント

ウェブページ内のtype="text"type="file"type="password"を指定したinput要素、textarea要素、select要素全てについて:

  1. input要素、textarea要素及びselect要素の前に、そのコントロールの目的が特定できるlabel要素がある。

  2. label要素のfor属性値が、input要素、textarea要素及びselect要素のidと一致している。

  3. label要素のラベルが視覚的に認識できる状態である。

ウェブページ内のtype="checkbox"及びtype="radio"を指定したinput要素全てについて:

  1. input要素の後に、そのコントロールの目的が特定できるlabel要素があるか確認する。

  2. label要素のfor属性が、input要素のid属性と一致している。

  3. label要素のラベルが視覚的に認識できる状態である。

判定基準

注意: この実装方法が「達成基準を満たすことのできる実装方法」の一つである場合、このチェックポイントや判定基準を満たしていなければ、それはこの実装方法が正しく用いられていないことを意味するが、必ずしも達成基準を満たしていないことにはならない。場合によっては、別の実装方法によってその達成基準が満たされていることもありうる。

日本語訳における注記:

この文書の正式版は、W3Cサイトで公開されている英語の文書であり、この日本語訳には誤訳が含まれていることもありえます。なお、文中にある「日本語訳における注記」は、W3Cの原文にはないものであり、日本語訳監修者が追記したものです。