问题描述
我有以下来自 Vue 组件的简单 html
<div v-if="!answer">
<h5>Question?</h5>
<button>Yes</button>
<button>No</button>
</div>
<form v-if="answer == 'no'">
<label for="id123">Question 2</label>
<textarea id="id123"></textarea>
<button type="submit"></button>
</form>
<div v-if="answer='submitted'">
Errors or success message from server
</div>
如果答案是“是”,它将被发送到服务器。 如果问题的答案是“否”,则将呈现文本区域,然后将提交表单并将其与答案一起发送到服务器。 然后在这两种情况下,在服务器响应后,都会呈现带有错误或成功消息的 div。
我的问题是,如何将按钮“是”和“否”与表单相关联?所以屏幕阅读器和其他辅助技术知道这与带有 textarea 的表单相关吗?使用一些 aria-* 属性?
或者我应该以其他方式构建 html?
解决方法
aria-controls
应该在一个 GUI 元素和另一个 GUI 元素之间建立关联(例如,与隐藏/显示内容相关联的隐藏/显示链接)。
Support is quite poor and unpredictable,但严格按照规范,这是正确的。但是,我想知道为什么您不只是将按钮放在表单中,因为其中一个按钮会导致表单提交,而另一个只是显示更多表单。
顺便说一句,考虑使用 <output>
作为服务器响应,因为辅助技术会将其视为活动区域,并自动宣布。