#10929·chakra-ui

为 Button 添加对 `accessibleWhenDisabled` 的支持

作者: isBatak创建于 2026年8月13日更新于 2026年8月22日
标签needs triage

说明

在“按钮”中添加“在残疾时无障碍”道具,使一个已禁用的按钮能够聚焦,并便于辅助技术使用。

启用后,Chakra将使用aria-disabled='真'而不是当地disabled'属性。

问题说明/理由

目前,当一个按钮被禁用时,例如在进入加载状态时,它会失去焦点,因为原生的被禁用属性会从焦点顺序中移除.

点击按钮后,理想的做法是,在动作进行中时,重点应放在同一个控制上,而不是在禁用变为真实时丢失。

我认为这种行为除了加载/待用按钮以外有用,所以一个通用的API比专门绑在正中或加载状态上的东西更有意义.

Ariakit使用在残疾时可使用 ' 的名称,我宁愿使用这个名称,也不愿使用类似在残疾时可使用 ' 的名称。 它描述了行为的用意而不是一个特定的后果.

建议的解决方案或API

在残疾道具时添加可访问性 :

< 按钮已禁用, 当已禁用 >
提交
</按钮>

< 禁用时按钮加载 >
提交
</按钮>

没有道具,当前的行为保持不变:

< 按钮已禁用 >
提交
</按钮 >

当Chakra无法进入时,

<按钮 aria- disabled="真" >
提交
</按钮 >

Chakra还需要防止在aria-disabled="真'时触发按钮的行为,因为aria-disabled'本身并不妨碍互动。

替代品

如果这个行为被采纳,也可能值得考虑在Zag.js按钮机中执行. 当前按钮执行已经包含关于禁用状态和加载状态的交互逻辑,将这种行为移入共享状态机器可以减少特定框架的代码,同时让基于Zag.js的所有框架都能提供该特性.

补充信息

类似的 API / 讨论 :

https://ariakit.com/reference/button#accessed when Disabled https://ariakit.com 引用/按钮#accessed when Disabled

内容来源: chakra-ui/chakra-ui