我的DOM中有以下代码:
<fieldset>
<legend id="language-legend">What languages do you know?</legend>
<p id="language-description">
You can select one or more.
</p>
<div class="form-check">
<input name="language" class="form-check-input" type="checkbox" value="python" id="language-checkbox-1" aria-labelledby="label-1 language-legend" aria-describedby="language-description">
<label id="label-1" class="form-check-label" for="language-checkbox-1">
Python
</label>
</div>
<div class="form-check">
<input name="language" class="form-check-input" type="checkbox" value="javascript" id="language-checkbox-2" aria-labelledby="label-2 language-legend" aria-describedby="language-description">
<label id="label-2" class="form-check-label" for="language-checkbox-2">
JavaScript
</label>
</div>
<div class="form-check">
<input name="language" class="form-check-input" type="checkbox" value="c++" id="language-checkbox-3" aria-labelledby="label-3 language-legend" aria-describedby="language-description">
<label id="label-3" class="form-check-label" for="language-checkbox-3">
C++
</label>
</div>
</fieldset>
我正在做以下工作:
- 使用
<fieldset>
和<legend>
对相关复选框进行分组 - 每个复选框都有相同的
name
,即name="language"
- 每个复选框由
<legend>
和实际的<label>
元素标记,使用aria-labelledby
标签. - 每个复选框都由
<p>
使用aria-describedby
标记来描述.
我是否正确使用了所有aria
个标签?此表单字段是否完全可用?
EDIT个
双子座建议重写如下:
过度咏叹调标签:
- 对于每个复选框,在aria-labelledby中同时包含
<legend>
个元素和<label>
个元素通常是多余的.<legend>
已经为<fieldset>
中的所有复选框提供了组标签. - 依靠屏幕阅读器的视觉关联来推断复选框和图例之间的关系.
移动咏叹调—描述由<fieldset>
:
- 该描述适用于整个复选框组,而不是单个的每个复选框.
- 在
<fieldset>
元素上放置aria—detailed by ="language—Description",而不是每个复选框.
<fieldset aria-describedby="language-description">
<legend>What languages do you know?</legend>
<p id="language-description">
You can select one or more.
</p>
<div class="form-check">
<input name="language" class="form-check-input" type="checkbox" value="python" id="language-checkbox-1">
<label class="form-check-label" for="language-checkbox-1">
Python
</label>
</div>
<div class="form-check">
<input name="language" class="form-check-input" type="checkbox" value="javascript" id="language-checkbox-2">
<label class="form-check-label" for="language-checkbox-2">
JavaScript
</label>
</div>
<div class="form-check">
<input name="language" class="form-check-input" type="checkbox" value="c++" id="language-checkbox-3">
<label class="form-check-label" for="language-checkbox-3">
C++
</label>
</div>
</fieldset>
这样真的更好吗