91-WEB · 原创学习示例

本站学习首页 · 代码讲解 · 源文件与许可

可访问的学习计划表单

表单不仅要能填写,还要说清每个字段的用途和错误原因。此例生成一份当前页面内的学习计划预览,刷新即清空。

围绕检索词“9.1免费版代码”提供原创练习。“9.1”在本站仅是未确认的检索或版本线索;本示例由 91-web.cn 为网页制作学习编写,不是任何 9.1 产品的官方代码,也不提供未经核验的产品安装包。

动手示例

这是本地练习,不是预约服务。请填学习昵称,不要输入真实身份、电话或其他隐私数据;预览不会发送,也不写入本地存储。

学习安排

2–20 个字符;只用于这一页的预览。

10–120 分钟,以 10 分钟为一档。

计划预览

尚未生成计划。字段说明和练习正文可直接阅读。

这段代码解决什么问题

显式 label for 与输入框的 id 配对。aria-describedby 同时关联补充说明和本字段错误,aria-invalid 只在检验失败后设置。

按钮为 type="button",脚本阻止 form 的默认提交事件;不会构造网络请求。检验不通过时,焦点移到可聚焦的错误摘要,摘要中的普通链接可回到具体字段。通过时只更新预览文字和状态信息。

关键片段

<label for="minutes">计划时长</label>
<input id="minutes" type="number" min="10" max="120"
  step="10" aria-describedby="minutes-help minutes-error">
// 数值比较,不比较输入字符串
const n = Number(minutes.value);
const valid = minutes.value.trim() !== "" &&
  Number.isInteger(n) && n >= 10 && n <= 120 && n % 10 === 0;

这里展示关键片段;完整 HTML、CSS 和 JavaScript 在下载包及源文件 TXT 中。TXT 保存为 UTF-8 的 .html 后可打开。

运行条件与源文件

解压 ZIP 后,用支持现代 HTML、CSS、JavaScript 的浏览器直接打开 accessible-form.html。无需安装依赖、启动构建工具或连接服务;下载包中的文件没有外部字体、样式、图片、模块导入或网络请求。在线参考链接只有点击后才访问对应网站。

关闭 JavaScript 仍可阅读本文和初始示例内容;动态操作按钮保留禁用状态或静态内容,不表示已运行交互。 本例没有做浏览器兼容性认证或辅助技术实测,学习者可按自己的设备验证键盘操作和朗读结果。

本站原创示例代码使用 MIT License,允许修改和再分发,发布代码副本时须保留版权与许可文本。许可不保证代码适合任何特定生产场景;生产环境需另接合适的服务和测试。查看完整 MIT 许可 · 运行说明

进一步阅读

以下官方资料用于核对语义和 API 行为,本站示例及文字为原创编写。