我目前正在向表单添加一些日期输入。我有一个“开始日期”和“结束日期”输入,但只想对两个输入使用一个标签(“日期”)。
是否有可能做到这一点?可访问性问题是什么?
我目前的想法是显示一个标签“日期”,然后为屏幕阅读器的每个输入设置两个隐藏标签等。这是要走的路吗?有没有大型网站做这种事情的例子(如果可能的话,政府网站)?
这是一个可能由政府机构使用的项目,因此对其遵守可访问性有严格的规定。
我目前正在向表单添加一些日期输入。我有一个“开始日期”和“结束日期”输入,但只想对两个输入使用一个标签(“日期”)。
是否有可能做到这一点?可访问性问题是什么?
我目前的想法是显示一个标签“日期”,然后为屏幕阅读器的每个输入设置两个隐藏标签等。这是要走的路吗?有没有大型网站做这种事情的例子(如果可能的话,政府网站)?
这是一个可能由政府机构使用的项目,因此对其遵守可访问性有严格的规定。
在这种情况下,我认为最好的标记是将输入包装在 a 中fieldset
,将 alegend
用于“日期”,labels
同时使用inputs
并隐藏标签:
HTML
<fieldset>
<legend>Dates</legend>
<label for="startdate">Start Date</label>
<input type="text" name="startdate" id="startdate" placeholder="Start Date">
<label for="enddate">End Date</label>
<input type="text" name="enddate" id="enddate" placeholder="End Date">
</fieldset>
CSS
fieldset {
border: none;
}
label {
margin-left: -999em;
}
input {
display: block;
}
我认为您最好的选择是在每个输入中包含一个标签。然后对于您不想实际显示在页面上的标签,可以简单地使用 CSS 通过
.hide {
position: absolute;
left: -9999em;
}
...或类似的东西
这里的问题是您只能for
为每个标签指定一个。我想,出于可访问性目的,最好labels
为每个日期显示两个。这样,任何使用屏幕阅读器等的人都将获得每个输入的有效标签。
<label for="x">x name</label><input name="x"/>
<label for="y">y name</label><input name="y"/>