フォームフィールドには複数のラベル要素を含めることはできません
修正方法
フォーム フィールドに1つのラベルのみを割り当てることを確認してください。
正しいマークアップソリューション
form-field-multiple-labels
ルールには、分析に合格する5つのマークアップ パターンが含まれています。
<label for="pass1">Label</label>
<input type="text" id="pass1" />
<textarea id="pass2" title="Label"></textarea>
<label>First Name: <input type="text" id="pass3" /></label>
<label>Choose an option:
<select id="pass4">
<option selected="selected">Chosen</option>
<option>Not Selected</option>
</select>
</label>
<label>Enter your comments:
<textarea id="pass5"></textarea>
</label>
注意: スクリーンリーダーとブラウザの組み合わせでは、複数の form
要素ラベルが一貫してサポートされません。
以下のマークアップ例は、axe-core 3.4.0リリース時点でここに記載された以下のスクリーン リーダーとブラウザーの組み合わせで動作します。スクリーン リーダーとブラウザー テストの組み合わせの詳細については、「 単一入力の複数のラベル 」を参照してください。
<input type="checkbox" id="D" aria-labelledby="E"/>
<label for="D" aria-hidden="true">Please</label>
<label for="D" id="E">Excuse</label>
<input type="checkbox" id="F" aria-labelledby="G H"/>
<label for="F" id="G" aria-hidden="true">Please</label>
<label for="F" id="H">Excuse</label>
<input type="checkbox" id="I"/>
<label for="I" style="display:none">Please</label>
<label for="I">Excuse</label>
フォーム要素ごとに1つの表示ラベルが存在することを確認します。これにより、ほとんどのスクリーン リーダーとブラウザーの組み合わせで正しい機能が実現します。aria-hidden
属性だけを使用するだけでは不十分で、CSSを使用して追加のラベルを非表示にする必要があります。
誤ったマークアップの例
form-field-multiple-labels
分析に失敗する9つのマークアップ パターンがルールに含まれています。
<label for="fail1">Hi</label>
<label for="fail1">Foo</label>
<input type="text" id="fail1" />
<label for="fail2">label 1 one</label>
<label for="fail2">label 2 two</label>
<input type="checkbox" id="fail2" />
<label for="fail3" id="l1">label one</label>
<label for="fail3">label two</label>
<input type="checkbox" id="fail3" aria-labelledby="l1" />
<label for="fail4">名前:</label>
<label>名前:
<input type="text" id="fail4" />
</label>
<label for="fail5">オプションを選択:</label>
<label>オプションを選択:
<select id="fail5">
<option selected="selected">選択済み</option>
<option>未選択</option>
</select>
</label>
<label for="fail6">コメントをinputしてください:</label>
<label>コメントをしてください:
<textarea id="fail6"></textarea>
</label>
<label>コメントをしてください:
<label>コメントをしてください:
<textarea id="fail7"></textarea>
</label>
</label>
<label>コメントをしてください:
<label>コメントをしてください:
<label>コメントをしてください:
<textarea id="fail8"></textarea>
</label>
</label>
</label>
<label for="fail9">コメントをinputしてください:</label>
<label>コメントをしてください:
<label>コメントをしてください:
<label>コメントをしてください:
<textarea id="fail9"></textarea>
</label>
</label>
</label>
なぜ重要なのか
同じフォーム フィールドに複数のラベルを割り当てると、スクリーン リーダーとブラウザーの組み合わせによっては問題が発生し、組み合わせごとに結果が一致しなくなる可能性があります。いくつかの組み合わせでは最初のラベルが読み取られます。いくつかの組み合わせでは最後のラベルが読み取られます。他の組み合わせでは両方のラベルが読み取られます。
ルールの説明
フォーム フィールドに複数のラベルがないことを確認します。
仕組みについて (簡単に言うと)
フォーム フィールドに複数のラベルがないことを確認します。