第 20 课2026.09.28
无效提交时,把时长输入框与页面内的具体错误文字关联。
第 20 课:关联输入错误详情
- 日期:2026-09-28
- 课程序号:第 20 课
- 知识点:
aria-errormessage
用途或适用场景
无效提交时,把时长输入框与页面内的具体错误文字关联。
核心概念
aria-errormessage 必须与 aria-invalid 配合;错误有效时消息可见,恢复编辑时移除关联并隐藏消息。
最小代码或操作示例
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>
<p id="minutes-error" hidden>提交失败:练习时长必须至少为 1 分钟。</p>
<button type="submit">提交</button>
</form>
<script>
const form = document.querySelector('#lessonForm');
const input = document.querySelector('#minutes');
const error = document.querySelector('#minutes-error');
form.addEventListener('submit', event => {
if (!form.reportValidity()) {
input.setAttribute('aria-invalid', 'true');
input.setAttribute('aria-errormessage', 'minutes-error');
error.hidden = false;
event.preventDefault();
}
});
input.addEventListener('input', () => {
input.removeAttribute('aria-invalid');
input.removeAttribute('aria-errormessage');
error.hidden = true;
});
</script>3~5 分钟练习
输入 0 提交,再改为 5;检查错误文字和 aria-errormessage 的变化。
参考答案
无效提交后错误文字可见且属性值为 minutes-error;重新输入后错误文字隐藏,关联被移除。范围说明仍由 aria-describedby 关联。
与上一课的联系
沿用第 19 课的 lessonForm、minutes、reportValidity() 与 aria-invalid;本课只新增错误详情及其 aria-errormessage 关联;下一课可以在有效提交后向页面追加练习记录。
时效校验
时效校验:2026-09-28(已打开 W3C WAI-ARIA 1.2 的 aria-errormessage/aria-invalid 规范与 WHATWG 约束校验文档;未见废弃标记)。