HTML5 表单验证真的可以访问吗?

2024-01-12

所以我读了很多文章说 HTML 5 表单验证是可以访问的(东西required属性将阻止表单被提交(字段留空),但是当我在 Chrome 上的 NVDA 和 Android 上的 BackTalk 上测试我的表单时,如果我没有填写输入,它会重新聚焦到输入字段(这很好!)但是两个屏幕阅读器都会宣布“请填写此字段”,这对用户来说毫无用处,因为它们没有宣布该字段的标签。

那么 HTML5 验证本身就无法访问吗?另外,你能结合 HTML5 验证和自定义 JS 吗?

您是否必须编写自定义客户端站点验证才能使表单可访问?


简答

是的,标准 HTML5 验证可访问并将通过 WCAG2.1 AA,但你可以做得更好与一些JavaScript。

长答案

如果您需要支持 Internet Explorer 9 或更低版本,那么您将需要使用 JavaScript(根据WebAim 调查 https://webaim.org/projects/screenreadersurvey8/- “浏览器”部分仍覆盖约 3.6% 的屏幕阅读器用户)。

原生 HTML5 验证是一个非常好的起点,但也存在局限性(您在评论中给出了一个,一些屏幕阅读器 (NVDA) 不会再次宣布该标签,这意味着用户必须实际请求通过控件读取标签)。

另一件事是,一旦您离开一个字段,它通常不会告诉您您犯了一个错误,直到您提交了表单(这是有意的,但情况并非总是如此,具体取决于您的宣布速度、设置和浏览器) 。

例如更新aria-invalid对于即时反馈很有用(并为旧版浏览器提供支持,同时对于“不寻常”的屏幕阅读器更加强大)。

使用aria-live地区提供即时反馈onblur(或节流/去抖)也很有用并且是更好的解决方案。

另一件事是本机验证实际上并不是非常有效。例如 fff@fff 显示为有效电子邮件,并允许在type="email"字段,与type="url"它将允许https://fff提交(至少在 Chrome 中)。

我可以继续做其他事情,例如提供有关如何修复错误的更好说明(特别是电话号码之类的事情),但您明白了。

基本上,尽可能多地使用原生 HTML5 功能为 JavaScript 错误/不使用 JavaScript 的人提供坚实的基础和良好的后备。然后使用CSS和JS来改善大家的体验。

另外,你能结合 HTML5 验证和自定义 JS 吗?

您可以而且应该注意,您最终会加倍验证(正如我在后备中所说,这并不是一件坏事)。

美妙之处在于您可以在 JavaScript 中使用伪选择器按类型定位字段,从而无需添加不必要的类等。

e.g. document.querySelectorAll('input[type=email]')可用于选择任何电子邮件输入进行验证或document.querySelectorAll('input[required]')查找所有必填字段。

您还可以使用类似的东西max="100"在滑块/数字输入上“即时”设置验证范围,并且仍然有一个没有 JavaScript 的后备方案。

正如您可以想象的那样,如果您找不到可以在几乎任何形式上重用的现成库,那么您可以编写一个库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 表单验证真的可以访问吗? 的相关文章

  • 滚动时的 CSS 背景模糊

    我有固定的背景图像 滚动时我希望图像变得模糊 我知道如何在 css 中进行模糊 但在特定的滚动位置进行 这是一个例子 https medium com good music f160ba9e6c52 https medium com goo
  • 转义 h 轮廓

    因此 我一直在尝试找出在被较低级别的标题吸引后添加内容的最佳方法是什么 section h1 Title of Section h1 h2 Related 1 h2 h2 Related 2 h2 p I NEED THIS TO BE P
  • 两列表:一列尽可能小,另一列占据其余部分

    我在 div 中有一个 to columns 表 div table tbody tr td class action a a td td class content p Bigger text variable size p td tr
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 虚拟乐器 iPhone 应用程序中的 VoiceOver 辅助功能?

    我收到盲人用户的评论 称我的一些声音和音乐相关应用程序只能在关闭 VoiceOver 的情况下使用 在 iOS 设备上启用 VoiceOver 辅助功能后 是否可以启用音乐键盘或鼓垫触摸区域 以便在点击键盘键或虚拟鼓组 等 时可以立即播放音
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • 在所有浏览器的 HTML 页面中嵌入 .wav 文件(无控件)

    我需要在单击按钮时播放一些 wav 文件 我找到了在 IE 中工作的解决方案 但它需要 Firefox 的 QuickTime 插件 还有其他办法吗 h1 test h1 span span
  • HTML“标题”属性:对应用到哪个标签有限制吗?

    我读过了在 Mozilla 网站上关于title属性 https developer mozilla org en US docs Web HTML Global attributes title contains a text repre
  • 无法读取未定义的属性“搜索”

    我正在尝试制作一个使用 YouTube API 的脚本 我输入了一个关键字 youtube api 找到视频 gt 脚本获取第一个结果并返回 VideoID 现在我的问题是 当我按下提交按钮时 搜索功能不会被触发 有谁知道这可能是什么原因
  • 仅 IE9_有时_会忽略

    我们正在开发一个大量使用 这是典型的 TYPO3 网站 该网站是在子目录中开发的 稍后将被重新定位到顶级目录 因此我们无法轻易删除 我们的客户告诉我们 有时当她浏览新页面时 她得到的页面内容没有应用布局 我们对此进行了调试 仅在 IE9 中
  • 先按行再按列布局 div

    我有一个容器div and 3 div里面如下 div div 1 div div 2 div div 3 div div 不知道每一个的内容div内部 但它们的高度和宽度是可变的 集装箱的高度由最高的决定div inside 我想展示这些
  • 获取 FileReader() 的结果对象

    有什么方法可以在不通过函数的情况下获取 FileReader 的结果对象 我在下面制作了示例代码 HTML br br br div div JS var code lorem ipsum input type file change fu
  • socket.io 的良好初学者教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 确定 C 字符串是否是 C 中的有效 int

    我需要检查 C 字符串是否是有效整数 我都尝试过 int num atoi str and int res sscanf str d num 但发送字符串 8 9 10 这两行都仅返回 8 而没有指示该字符串的无效性 谁能提出替代方案 看看
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • Jquery 数据表列总和

    我只是参考一下这个链接 https datatables net examples advanced init footer callback html了解如何获取 jquery 数据表中的列总计 但我已经完成了一半的项目 我在html页面
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 表格行未扩展到全宽

    我有一个表格 当我将表格的宽度设置为 100 并将表格行的宽度设置为 100 时 没有任何反应或宽度发生变化 Table Normal position relative display block margin 10px auto pad

随机推荐