一组单字符文本输入,用于处理一次性密码验证。
import * as React from "react";import { unstable_OneTimePasswordField as OneTimePasswordField } from "radix-ui";const OneTimePasswordFieldDemo = () => (<OneTimePasswordField.Root className="OTPRoot"><OneTimePasswordField.Input className="OTPInput" /><OneTimePasswordField.Input className="OTPInput" /><OneTimePasswordField.Input className="OTPInput" /><OneTimePasswordField.Input className="OTPInput" /><OneTimePasswordField.Input className="OTPInput" /><OneTimePasswordField.Input className="OTPInput" /><OneTimePasswordField.HiddenInput /></OneTimePasswordField.Root>);export default OneTimePasswordFieldDemo;
模仿单个输入字段的键盘导航
粘贴时覆盖值
密码管理器自动填充支持
对数字和字母数字值的输入验证
完成后自动提交
隐藏输入以为表单数据提供单个值
导入所有部分并将其组合在一起。
包含一次性密码字段的所有部分。
呈现一个文本输入,表示值中的单个字符。
Root
组件接受任意子项,因此在输入之间渲染视觉分隔列表就像在输入之间渲染分隔符一样简单。我们建议使用 aria-hidden
隐藏装饰元素,以防辅助技术,并避免在 Root
中渲染其他有意义的内容,因为每个子元素预计都属于具有 group
角色的父元素。
使用 autoSubmit
属性,当所有输入都被填写时提交关联的表单。
撰写本文时,WCAG 指南中没有实施一次性密码字段作为单独输入的单一确定的模式。该行为旨在尽可能接近使字段像单个输入一样运行,并根据我们最初的研究、测试和反馈收集进行了一些例外。
此组件作为具有 group
角色的容器内的 input
元素实现,以指示子输入相关联。可以使用方向键进行导航和聚焦,键入输入将移动焦点到下一个输入,直到到达最后一个输入。
将值粘贴到字段中将替换所有输入的内容,无论当前聚焦的输入是什么。根据我们的研究,这似乎与大多数用户期望相符,因为值通常是从密码管理器或电子邮件中粘贴过来的。