密码输入
由单字符字母数字输入框组成的序列。
特性
- 完整的键盘导航。
- 可受控或非受控。
- 支持从剪贴板粘贴
- 当输入框被填满时触发事件。
安装
从命令行安装此组件。
sh
$ npm add reka-ui结构
导入所有部分并将其组合。
vue
<script setup>
import { PinInputInput, PinInputRoot } from 'reka-ui'
</script>
<template>
<PinInputRoot>
<PinInputInput />
</PinInputRoot>
</template>API 参考
根组件
包含密码输入的所有部分。当在 form 中使用时,也会渲染一个 input 以确保事件正确传播。
| 属性 | 默认 | 类型 |
|---|---|---|
as | 'div' | AsTag | Component此组件应渲染为的元素或组件。可通过 |
asChild | 布尔值更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。 阅读我们的 组合指南了解更多详情。 | |
defaultValue | (string[] | number[])[]密码输入框首次渲染时的默认值。当您不需要控制其受控状态时使用。 | |
dir | 'ltr' | 'rtl'适用时,组合框的阅读方向。 | |
disabled | 布尔值当 | |
id | string元素的 ID | |
mask | 布尔值当 | |
modelValue | string[] | number[] | null密码输入框的受控状态。可作为 | |
name | string字段的名称。随其所属的表单一起作为名称/值对提交。 | |
otp | 布尔值当 | |
placeholder | '' | string用于空密码输入框的占位符字符。 |
required | 布尔值当为 | |
type | 'text' as any | 'number' | 'text'输入框的类型。 |
| 事件触发 | 载荷 |
|---|---|
complete | [value: string[] | number[]] |
update:modelValue | [value: string[] | number[]]值改变时调用的事件处理程序。 |
| 插槽(默认) | 载荷 |
|---|---|
modelValue | string[] | number[]当前输入值 |
| 数据属性 | 值 |
|---|---|
[data-complete] | 完成时存在 |
[data-disabled] | 禁用时存在 |
输入框
密码输入的输入字段。您可以根据需要添加任意数量的输入框。
| 属性 | 默认 | 类型 |
|---|---|---|
as | 'input' | AsTag | Component此组件应渲染为的元素或组件。可通过 |
asChild | 布尔值更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。 阅读我们的 组合指南了解更多详情。 | |
disabled | 布尔值当 | |
index* | 数字此输入框绑定值的序号。 |
| 数据属性 | 值 |
|---|---|
[data-complete] | 完成时存在 |
[data-disabled] | 禁用时存在 |
示例
OTP 模式
您可以将密码输入框设置为 otp 模式,方法是将 otp 设置为 true。
vue
<script setup lang="ts">
import { Label, PinInputInput, PinInputRoot } from 'reka-ui'
</script>
<template>
<PinInputRoot v-model="value" otp>
…
</PinInputRoot>
</template>数字模式
您可以通过将 type 设置为 number 来使密码输入框仅接受数字类型。
vue
<script setup lang="ts">
import { Label, PinInputInput, PinInputRoot } from 'reka-ui'
</script>
<template>
<PinInputRoot v-model="value" type="number">
…
</PinInputRoot>
</template>无障碍性
键盘交互
| 键 | 描述 |
|---|---|
向左箭头 | 聚焦到上一个输入框。 |
向右箭头 | 聚焦到下一个输入框。 |
Home | 聚焦到第一个输入框。 |
End | 聚焦到最后一个输入框。 |
Backspace | 删除当前输入框的值。如果输入框为空,则移动到上一个输入框并删除其值。 |
Delete | 删除当前输入框的值。 |
Ctrl + V | 将剪贴板内容粘贴到密码输入框中。如果剪贴板中的字符数等于或超过输入框的数量,则从第一个输入框开始粘贴内容。否则,内容将从当前输入框开始粘贴。 |
