辅助功能:在密码输入中显示/隐藏密码按钮

2024-05-27

密码输入具有显示/隐藏按钮是很常见的,但我在网上发现很少有关于与其相关的可访问性问题的内容 - 我是否应该将任何类型的 ARIA 属性附加到按钮或密码输入?是一个复选框还是一个触发JS的按钮也能达到很好的效果?

不知道我应该注意什么,作为一个不太熟悉但想要了解可访问性最佳实践的人。


有趣的问题。

这可能是我能找到的关于这个主题的最相关的文献:

披露是一个控制内容部分可见性的按钮。当受控内容被隐藏时,它通常被设计为带有向右箭头或三角形的典型按钮,以暗示激活该按钮将显示其他内容。当内容可见时,箭头或三角形通常指向下方。

(and)

  • 显示和隐藏内容的元素具有作用button.
  • 当内容可见时,具有角色按钮的元素具有aria-expanded设置为 true。当内容区域隐藏时,设置为 false。
  • (可选)具有角色按钮的元素具有指定的值aria-controls指的是包含所有显示或隐藏内容的元素。

See https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure

我根本不是可用性专家,但看到与您的用例的联系似乎并不疯狂。因此,为了回答您的问题,我将应用 ARIA 属性以及一些 JavaScript。

function toggle_visibility(el) {
  const control = el.getAttribute('aria-controls');
  const expanded = el.getAttribute('aria-expanded') === 'false';
  document.querySelector(`#${control}`).type = expanded ? 'text' : 'password';
  el.setAttribute('aria-expanded', String(expanded));
  el.textContent = expanded ? 'hide' : 'show';
}

document.querySelector('button').addEventListener('click', ({
  target
}) => toggle_visibility(target));
<div>
  <label for="password">password</label>
  <input type="password" id="password">
  <button aria-controls="password" aria-expanded="false">show</button>
</div>

这是 Chrome 开发工具的截屏视频。请注意我们如何在“辅助功能”面板中引用密码控件。

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

辅助功能:在密码输入中显示/隐藏密码按钮 的相关文章

随机推荐

  • 使 .git 目录 web 不可访问

    我有一个网站 我使用 github 闭源 来跟踪更改和更新网站 唯一的问题是 git 目录似乎可以通过网络访问 我怎样才能停止这个并且仍然能够使用 git 我应该使用 htaccess 吗 我应该更改 git 的权限吗 把这个放在一个 ht
  • std::regex 的行为不一致

    我有以下问题 std regex如果我传递结果 行为会有所不同boost filesystem path string vs 将结果存储在中间字符串变量中 第一个将返回一个被截断的匹配 并且稍后不被接受std stoull 抛出 inval
  • jQuery:根据鼠标位置移动的全屏“背景”图像[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试实现一个根据鼠标位置移动的全屏背景 例如 如果您将鼠标移动到左上角 视口将显示图像的左上角以
  • /getaddrinfo 处出现 SocketError:未提供节点名或服务名,或未知 padrino

    我正在尝试使用 padrino 为我的亚马逊环境构建仪表板 但是当我在控制器中尝试以下代码时 get index map gt do AWS config access key id ACCESS KEY secret access key
  • Flutter 图像选择器明确请求许可

    图像选择器包说 无需配置 该插件应该开箱即用 不再需要添加 android requestLegacyExternalStorage true 作为属性 AndroidManifest xml 中的标记 如 image picker 所示
  • 如何与他人共享 xCode .app 产品

    我在 xCode 中构建了一个非常简单的应用程序 并希望与其他不运行 xCode 的计算机共享它 这是一个简单的打印到控制台应用程序 我如何在不通过 iTunesconnect 的情况下与他们分享 看起来很浪费 有没有办法向他们发送可以安装
  • PostgreSQL 中 JSON 数据类型的大小限制

    有谁知道 PostgreSQL 9 2 中 JSON 数据类型的大小限制是多少 查看 PostgreSQL 9 2 1 的源代码 Source postgresql 9 2 1 src backend utils adt json c In
  • 如何在Rails 4.1中使用secrets.yml作为API_KEYS?

    在我最近的一个项目中 我开始于 gitignoring包含机密和环境变量的文件 因此 除了包含第三方机密 例如 Stripe Twitter API 或 Facebook Graph 或内部 api keys 等 的文件外 整个项目都致力于
  • TypeError: 'module' 对象不可调用错误 driver=webdriver("C:\\Python34\\Lib\\site-packages\\selenium\\webdriver\\chromedriver.exe")

    我在 Pycharm 中遇到类似错误 Traceback most recent call last File C PycharmProjects DemoPyth PythonPack1 Prg1 py line 3 in
  • 分组依据检索 3 个值

    我有以下查询 SELECT Cod MIN Id AS id Min MAX Id AS id Max retrieve value in the middle COUNT AS Tot FROM Table a NOLOCK GROUP
  • Django 模型表单中的必填字段

    我有一个表格 当我也不想要它们时 会根据需要显示几个字段 这是来自 models py 的表格 class CircuitForm ModelForm class Meta model Circuit exclude lastPaged d
  • Windows Azure 上的 .NET 4.0?

    我的谷歌搜索在这方面让我失败了 作为一个可能的解决方案在 VS2010 中使用 MStest 对 NET 3 5 项目进行单元测试 https stackoverflow com questions 1679404 unit testing
  • 是否可以使用相同的客户端凭据拥有多个有效的访问令牌?

    我有一个使用 OAuth2 身份验证的 API 设置 客户已使用 WSO2 订阅了我的 API 我们不使用刷新令牌 所有访问令牌将在 1 小时后过期 如果我的客户端使用相同的客户端凭据请求 2 个访问令牌 会发生什么情况 第一个令牌会被撤销
  • VS2013 - GIT 不工作

    我最近安装了VS2013 每当我尝试使用 GIT 执行任何操作时 我都会在输出窗口中收到以下两条消息 libgit2 引发错误 类别 未知 错误 本机库未提供错误消息 该问题可能主要出现在远程存储库获取中 在克隆远程存储库之前 请打开远程
  • Laravel Valet 不工作。 127.0.0.1 连接被拒绝

    试图让代客泊车设置正常工作 当访问 127 0 0 1 时 连接被拒绝 这是我在访问 dev 站点设置之一时收到的消息 我已经确保 apache 已停止 并且一直在谷歌上搜索所有地方 但无法找到解决方案 有没有人遇到过这个或对下一步尝试什么
  • allocator.construct 循环是否等于 std::uninitialized_copy?

    在此背景下T是某种类型并且allocator是该类型的分配器对象 默认情况下是std allocator
  • 使用泛型进行选择排序

    我对整数进行了选择排序并且它正在工作 当我尝试修改程序以使用泛型时 编译器会抱怨 我不知道如何修复它 如果有人能提出一些建议和建设性意见 我将不胜感激 这是代码 public class SelelctionSort public stat
  • Accepts_nested_attributes_for Rails 3 中的实际形式使用

    使用 Ruby on Rails 3 我半明白accepts nested attributes for是如何的supposed工作 但我无法找出以某种形式实现这一点的实用方法 例如 如果有人想在其用户页面中添加他们最近的位置 user r
  • 有没有办法直观地看到精灵套件的 SKPhysicsbody 边界线?

    我在用bodyWithPolygonFromPath定义物理体的体积 我使用http dazchong com spritekit http dazchong com spritekit 获取所需的路径 但路径似乎不正确 我希望查看物理体路
  • 辅助功能:在密码输入中显示/隐藏密码按钮

    密码输入具有显示 隐藏按钮是很常见的 但我在网上发现很少有关于与其相关的可访问性问题的内容 我是否应该将任何类型的 ARIA 属性附加到按钮或密码输入 是一个复选框还是一个触发JS的按钮也能达到很好的效果 不知道我应该注意什么 作为一个不太