这种情况下,您不需要任何ARIA。你可以回到良好的用户体验,这将使ARIA变得不必要。
在表单的开头,您提供了所有字段都是必填字段的说明。这很好。然后,对于选项字段,在
<label>
。这也很好。
你可以停下来,准备好了。
然而,您已经将ARIA添加到表单中,并将其部分内容向后推。例如:
<form id="profile optional">
<h1 arialabelledby="profile">Profile</h1>
<p aria-describedby="optional">All fields are required unless marked optional</p>
你在告诉
<h1>
被标记为
<form>
<p>
由
<表单>
,这又是另一种情况。把这一切都拉出来。
或者以这个案例为例:
<div class="form-control">
<label id="lastName" for="lastName">Last Name</label>
<input type="text" name="lastName" aria-labelledby="lastName userInfo" aria-required="true" aria-describedby="error-message"/>
<span id="error-message" style="display:none" aria-hidden="true">Name is required</span>
</div>
这个
<input>
不需要
aria-labelledby
<标签>
这是免费的。另外,将其与
<legend>
您还应该删除
aria-required
只需使用HTML5布尔值
required
.
It is well supported
并使非屏幕阅读器用户受益。
虽然我怀疑您只会在出现错误时显示错误消息,但您可以完全删除它,让浏览器处理它。如果需要将其保留为向后兼容,请删除
aria-hidden
自
display:none
无论如何都要对屏幕阅读器隐藏它。
<button type="submit">Submit Profile</button>
。所有用户都将受益于更详细的按钮。
既然你好好利用了
<图例>
和
<fieldset>
,你可以把所有的东西都留下,你的状态很好。
您将创建一个可访问、可用、无ARIA的表单。无ARIA是一件好事。ARIA是一种桥接技术,只应在常规HTML中没有启示时使用。