第 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 未见废弃标记)。