输入验证:当 aria-describedby 所引用的元素不在 DOM 中时的最佳实践

Input validation: Best practice when element to which aria-describedby is refering to is not in the DOM yet

情况是这样的:输入字段(文本、电子邮件、密码)被标记为 aria-describedby="some-id"。如果用户输入不符合要求,则呈现带有 id="some-id" 的元素。在此之前,该元素不存在于 DOM.

当 运行 Google Lighthouse 测试时,这被标记为错误,因为 aria-describedby 所指的 id 在 DOM 中不存在只要输入为空或满足要求即可。

我在考虑两个解决方法:

  1. 使用 id="some-id" 渲染元素,但将其留空。并在用户输入不符合要求时立即插入内容。
  2. 渲染带有 id="some-id" 的元素,并在用户输入不满足要求时立即插入标签 aria-describedby="some-id"

对于这种情况下可访问性的最佳做法有什么建议吗?

aria-describedby 必须指向现有元素。在设置属性之前 div 必须存在。

你的两个解决方案都有效:

  • 您可以将 aria-describedby 属性指向一个空元素,并在需要时插入内容
  • 或者您可以在检测到错误时设置 aria-describedby