假设我使用setCustomValidity()为字段设置自定义有效性消息,以描述表单字段无效的原因。使用辅助技术的用户可以使用此内容吗?如果是,通常如何为用户提供?
例如,
my_element.setCustomValidity("This email address already exists")
如果我想确保有屏幕阅读器的用户会看到此消息,我应该避免使用setCustomValidity()
而是依赖aria-invalid
和aria-describedby
吗?
<input name="email" aria-invalid="true" aria-described="error">
<p id="error">This email address already exists</p>
答案 0 :(得分:1)
它将根据您正在使用的屏幕阅读器和浏览器而有效。
例如,使用NVDA和Firefox,它会正确地宣布错误消息,而使用Chrome时,它只会宣布错误。
最佳选择是继续使用setCustomValidity()
并且只要所有屏幕阅读器 - 浏览器组合未正确宣布错误,使用Success Criterion 3.3.1 - Error Identification
例如,Using ARIA role of alert for Error Feedback in Forms
<input name="email" aria-invalid="true" aria-describedby="alert_email" />
<p role="alert" id="alert_email">This email address already exists</p>
注意:如果用户希望再次传达错误消息,则可以提供属性描述的ARIA作为有用的补充,以提供对错误的引用,但对于成功应用此技术并非严格必要,并且是附带的应用这种技术