ラベルを用いているHTML及びXHTMLのフォーム・コントロール
これは、次の達成基準に関連する実装方法である:
HTML及びXHTML仕様書では、暗示的なラベルと明示的なラベルの両方を認めている。しかし、支援技術の一部は、暗示的なラベル(たとえば、<label>First name <input type="text" name="firstname"></label>
)を正確に処理できない。【訳注:なお、暗示的なラベルとは、ラベルとフォーム・コントロールを単にlabel
要素で囲んだだけのものである。一方、明示的なラベルとは、label
要素のfor
属性に、フォーム・コントロールのid
属性値と同じ値を指定することで、両者を明確に関連付けたものである。】
JAWS 7.10の動作を、Windows XPのInternet Explorer 6.0とFirefox 1.5で検証した。テキストフィールドに付けたラベルは、明示的なラベルでも暗示的なラベルでも、バーチャルPCカーソルとフォーム読み上げモードの両方で読み上げられた。ただし、フォーム読み上げモードでは、チェックボックスとラジオボタンに付けた暗示的なラベルは読み上げられなかった。
Window-Eyes 5.5の動作を、Windows XPのInternet Explorer 6.0とFirefox 1.5で検証した。フォームフィールドの明示的なラベルは常に読み上げられたが、ブラウズONモードでは暗示的なラベルは読み上げられなかった。ただし、ブラウズOFFモードでコントロールからコントロールへと移動したときは、暗示的なラベルでも読み上げられた。
ユーザーエージェントは、title
属性が指定してあるinput
要素にマウスオーバーしたときに、ツールチップを表示するようである。支援技術はtitle
属性を抽出し、多くのグラフィカルブラウザはtitle
属性をツールチップで表示する。ただし、キーボード操作ではツールチップを開けないため、視力はあるがマウスではなくキーボードを使っている利用者は、現状ではツールチップの情報を利用できない恐れがある。
JAWSとWindow-Eyesでは、フォーム・コントロールがフォーカスを受けたとき、もしラベルが指定されていなければ、title
属性を読み上げる。
JAWS 6.0以降では、label
要素とtitle
属性が異なるとき、その両方を読み上げるように設定できる。しかし、この設定方法に気づいているユーザーは非常に少ない。
Window-Eyes 5.5には、(title属性を含む)フォーカスされた項目の追加情報を読み上げるホットキー(ins+E)がある。
この実装方法の目的は、フォーム・コントロールとラベルを明示的に関連付けるために、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:明示的なラベルを利用する要素は次の通りである:
input type="text"
input type="checkbox"
input type="radio"
input type="file"
input type="password"
textarea
select
注記 2:次の場合には、label
要素は利用しない。これらの要素に対するラベルは、value
属性(送信ボタン及びリセットボタン)、alt
属性(画像ボタン)、又は要素それ自体の内容(汎用ボタン)を介して提供されるからである。
送信及びリセットボタン(input type="submit"
又はinput type="reset"
)
画像ボタン(input type="image"
)
隠しフィールド(input type="hidden"
)
スクリプトボタン(button
要素又は<input type="button">
)
この事例では、テキスト入力フィールドに「お名前」という明示的なラベルが付けてある。label
要素のfor
属性値は、input
要素のid
属性値と一致している。
コード例:
<label for="firstname">お名前:</label>
<input type="text" name="firstname" id="firstname" />
コード例:
<input type="checkbox" id="markuplang" name="computerskills" checked="checked">
<label for="markuplang">HTML</label>
関連するラジオボタンの小さなグループについて、簡単な説明が付けてあり、さらに個々の要素にラベルが付けてある。
コード例:
<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
要素全てについて:
input
要素、textarea
要素及びselect
要素の前に、そのコントロールの目的が特定できるlabel
要素がある。
label
要素のfor
属性値が、input
要素、textarea
要素及びselect
要素のid
と一致している。
label
要素のラベルが視覚的に認識できる状態である。
ウェブページ内のtype="checkbox"
及びtype="radio"
を指定したinput
要素全てについて:
input
要素の後に、そのコントロールの目的が特定できるlabel
要素があるか確認する。
label
要素のfor
属性が、input
要素のid
属性と一致している。
label
要素のラベルが視覚的に認識できる状態である。
1.及び2.を満たしている。達成基準 3.3.2に関しては、3.も満たしている。
注意: この実装方法が「達成基準を満たすことのできる実装方法」の一つである場合、このチェックポイントや判定基準を満たしていなければ、それはこの実装方法が正しく用いられていないことを意味するが、必ずしも達成基準を満たしていないことにはならない。場合によっては、別の実装方法によってその達成基準が満たされていることもありうる。
日本語訳における注記:
この文書の正式版は、W3Cサイトで公開されている英語の文書であり、この日本語訳には誤訳が含まれていることもありえます。なお、文中にある「日本語訳における注記」は、W3Cの原文にはないものであり、日本語訳監修者が追記したものです。