Artefact UI

Search

博客

文档

关于

演练场

编辑

菜单Chevron Down

博客

文档

关于

演练场

编辑

PinField 密码输入框 - Docs - Artefact

PinField 密码输入框

Forms
智能自动检测

Introduction

一个交互式分段输入控件,专为输入简短、固定长度的字母数字字符串而设计,例如验证码、一次性密码(OTP)、短信登录令牌和 PIN 值。它具有自动光标焦点循环、退格回删、粘贴净化以及完全统一的无障碍描述符。

PinField 组件已作为 pinField 区块完全集成到 Page Builder 中,使内容作者和开发人员能够直接在 CMS 中轻松配置代码长度、验证格式和输入状态。


Usage

以下示例展示了内容编辑人员如何绑定和构建自定义 PIN 输入组件。

1. 标准 6 位短信验证码输入

配置了 6 个分段框的标准数字 PIN 输入,针对电子邮件或短信验证码进行了优化。

{
  "type": "pinField",
  "label": "Verification code",
  "helperText": "Enter the 6-digit confirmation code we sent to your address.",
  "count": 6,
  "otp": true,
  "blurOnComplete": true,
  "interactive": true
}
Enter the 6-digit confirmation code we sent to your address.

2. 安全隐藏密码输入(4 位)

展示一个安全的 4 位 PIN 模块。设置 mask 属性可通过用通用安全项目符号字形替换字符来保护输入。

{
  "type": "pinField",
  "label": "Security PIN",
  "placeholder": "•",
  "count": 4,
  "mask": true,
  "interactive": true
}

3. 自定义字母数字促销码(flushed 变体)

使用字母数字格式和独特的 flushed 边框变体渲染 5 个框的验证码选择器。

{
  "type": "pinField",
  "label": "Promo Coupon Code",
  "placeholder": "-",
  "count": 5,
  "format": "alphanumeric",
  "variant": "flushed",
  "interactive": true
}

Props

属性CMS 字段类型默认值描述 / 支持的选项
标签文本 (label)string-显示在输入分段上方的视觉主标题。
辅助文本 (helperText)string-显示在输入框下方描述性说明文字。
错误信息 (errorText)string-当代码条目未通过校验器检查时显示的验证消息。
框数量 (count)number4要生成的输入分段框数量。
字符类型 (format)select"numeric"限制可接受的字符。
• 选项:"numeric""alphanumeric""alphabetic"
字符掩码 (mask)booleanfalse勾选后,将输入值替换为安全项目符号以保护密码输入。
OTP 自动填充 (otp)booleanfalse在移动设备上启用一次性代码自动填充检测。
自动提交 (autoSubmit)booleanfalse最后一个分段填满时立即提交外层表单。
视觉变体 (variant)select"outline"每个框的视觉样式。
• 选项:"outline""subtle""surface""flushed"
尺寸比例 (size)select"md"控制输入框的宽高。
• 选项:"xs""sm""md""lg""xl"
强制交互 (interactive)booleantrue对代码字段元素进行注水,以绑定标签触发与粘贴净化。

Developer Notes & Accessibility

  • 注水孤岛: 作为一个捕获粘贴事件、净化条目并处理移动端焦点边界上多输入光标跳转的高级布局,PinField 作为 Tier-2 条件性孤岛运行("interactive": true)。
  • WAI-ARIA 合规性: 组件为每个分段输入框包裹了适当的布局与标签(role="group"aria-label)。用户可以使用左右方向键或退格键在分段之间无缝切换。
  • 表单集成: 它包含一个原生的隐藏 <input>,携带完整的拼接密码字符串。自动提交规则在输入完成后调用 form.requestSubmit(),无缝地将操作提交到最近的父表单。