私の Web アプリケーションでは、以下の例のようにレイアウトされたフォームを使用しています...
First Name [____________]
Last Name [____________]
Gender () Male () Female
私が使用するマークアップは次のようなものです...
<label for="firstName">First Name</label><input type="text" id="firstName" />
<label for="lastName">Last Name</label><input type="text" id="lastName" />
<label>Gender</label>
<fieldset>
<legend>Gender</legend>
<input type="radio" name="sex" id="sex-m" value="m">
<label for="sex-m">Male</label>
<input type="radio" name="sex" id="sex-f" value="f">
<label for="sex-f">Female</label>
</fieldset>
次のような問題があり、解決方法がわかりません...
ラジオ ボタンのグループ全体に他のフィールドと同じようにラベルを付けたいのですが (上の図のように)、ラベルをリンクするものはありません (つまり、グループ内の各ラジオには個々のラジオ ボタンの値のためだけの独自のラベル) "for" 属性のないラベルは、アクセシビリティ コンプライアンスに合格しません。
フィールドセットの <legend> 要素は、ラベルの機能を複製しているようです。これは本当に必要ですか?
<legend> タグをラベルのようにスタイリングし、ラジオ ボタン グループのラベルを完全に省略することを考えていましたが、それは少しハックに思えますし、コードの他の場所でも複雑さを導入します (これは<label> 要素に依存して、気の利いた検証メッセージのマークアップやその他のさまざまなことを行います)
前もって感謝します。