渐进式编程课
HTML5 目录
第 19 课2026.09.24

校验失败后让辅助技术知道时长字段处于错误状态。

第 19 课:提交失败时标记输入错误

  • 日期:2026-09-24
  • 课程序号:第 19 课
  • 知识点:aria-invalid

用途或适用场景

校验失败后让辅助技术知道时长字段处于错误状态。

核心概念

仅在实际校验失败时设 aria-invalid="true";用户重新编辑后移除该标记。它补充错误状态,不代替浏览器的约束校验。

最小代码或操作示例

html
<form id="lessonForm" novalidate>
  <label for="minutes">练习分钟数</label>
  <input id="minutes" name="minutes" type="number" min="1" required aria-describedby="minutes-help">
  <p id="minutes-help">请输入至少 1 分钟。</p>
  <button type="submit">提交</button>
</form>
<script>
const form = document.querySelector('#lessonForm');
const input = document.querySelector('#minutes');
form.addEventListener('submit', event => {
  if (!form.reportValidity()) {
    input.setAttribute('aria-invalid', 'true');
    event.preventDefault();
  }
});
input.addEventListener('input', () => input.removeAttribute('aria-invalid'));
</script>

3~5 分钟练习

输入 0 提交,再改为 5;检查 aria-invalid 的变化。

参考答案

无效提交后为 true;重新输入后该属性被移除,后续提交仍由 reportValidity() 判断。

与上一课的联系

沿用第 18 课的标签、范围说明、aria-describedby 与 reportValidity();本课只新增提交失败后的 aria-invalid 状态;完成后下一课可把错误详情写入页面提示区域。

时效校验

时效校验:2026-09-24(WHATWG HTML 约束校验与 W3C WAI-ARIA 1.2;aria-invalid 未见废弃标记)。

官方参考