Skip to content

InputOtp 一次性密码输入框

一次性密码输入框组件,用于输入验证码、OTP 等场景。支持自动跳格、粘贴、退格回退、多种视觉风格。


基础用法

默认 6 位,自动跳转下一格。

vue

<TInputOtp v-model="value" />

自定义位数

通过 :length 设置输入框位数。

vue

<TInputOtp v-model="value" :length="4" />

视觉风格

三种样式:outlined(默认)、filledunderlined

vue

<TInputOtp :length="4" type="filled" />
<TInputOtp :length="4" type="underlined" />

尺寸

支持 smmdlg 三种尺寸。

vue

<TInputOtp :length="4" size="sm" />
<TInputOtp :length="4" size="lg" />

禁用 & 只读

vue

<TInputOtp :length="4" disabled />
<TInputOtp :length="4" readonly model-value="1234" />

密码模式

设置 mask 隐藏输入字符。

vue

<TInputOtp :length="4" mask />

分隔符

设置 separator 在每 3 位后显示分隔线。

vue

<TInputOtp :length="6" separator />

完成事件

所有位填满后触发 @finish 事件。

vue

<TInputOtp :length="4" @finish="handleFinish" />

API

Props

属性类型默认值说明
v-modelstring''输入的 OTP 值
lengthnumber6输入框位数
type'outlined' | 'filled' | 'underlined''outlined'视觉风格
size'sm' | 'md' | 'lg''md'尺寸
disabledbooleanfalse禁用
readonlybooleanfalse只读
maskbooleanfalse密码模式
separatorbooleanfalse显示分隔符
validator(char, index) => boolean字符校验函数
inputmode'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search''numeric'键盘模式

Events

事件参数说明
update:model-valuevalue: string值变化
changevalue: string失焦时触发
finishvalue: string所有位填满
focusevent: FocusEvent聚焦
blurevent: FocusEvent失焦

Expose

方法说明
focus(index?)聚焦指定位
blur()失焦
inputRefsinput 元素数组