Skip to content

n-code-input 验证码输入 ​

验证码 / 一次密码的分格录入组件:一排格子承接逐字符输入(自动前进、退格回退、粘贴整段填充),输满自动收起键盘并派发 finish。点击格子唤起系统键盘(type 决定数字或文本键盘);关掉系统键盘(disabled-keyboard)后可与自定义键盘(n-keyboard-number 等)搭配,值经 v-model 双向流动。show-resend 开启后格子下方内置「重新发送」倒计时重发行,承接验证码发送闭环。

  1. 值通道与 n-input 同构(受控双通道):update:model-value 供 v-model,change 同参同发;键入、退格、粘贴、外部赋值、clear() 都走同一条清洗管线(过滤小数点与空白、截断到 maxlength),显示与事件永远一致
  2. 值一律为 string(type="number" 取值仍是字符串),数字场景由使用侧自行转换
  3. 重发行为状态机:可发送 →(点击,派发 send)→ 正在发送 →(接口成功后 ref.start())→ 倒计时(每秒 countdown、结束 end)→ 可发送;接口失败调 ref.reset() 复位
  4. 光标闪烁与倒计时均由 JS 定时器驱动(无 CSS 动画),组件卸载即停表

平台兼容性 ​

App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序
√ √ √ × × × ×

API ​

属性 ​

参数 说明 类型 默认值 可选值
model-value 输入值(受控绑定:键入/退格/粘贴自动清洗后回传,超 maxlength 截断) String "" -
maxlength 验证码位数 = 格子数(同时是原生输入框的 maxlength),小于 1 按 1 处理;短信验证码常用 4 / 6 Number 4 -
type 键盘类型:number = 数字键盘(验证码主场景)/ text = 文本键盘(字母混合码);取值仍为 string String number number<br/>text
password 内容打码:已输入格显示圆点而非字符(支付密码场景);与 n-input 的 password 同义 Boolean false -
border 边框形态(与 n-input 同名同义):surround 全边框 / bottom 下划线 / none 无边框 String surround surround<br/>bottom<br/>none
hairline 细边框(0.5px 发丝线,高 DPR 屏更轻盈;bottom 形态作用在下划线上) Boolean false -
bold 格内字符加粗 Boolean false -
size 格子边长(px,正方形);格内字号按边长 0.55 比例联动(不超 0.7 安全线,各端字体不贴边) Number 44 -
focus 自动获取焦点(原生键盘模式触发系统聚焦;disabledKeyboard 模式下作为光标显隐的受控开关——自定义键盘打开时置 true、关闭时置回 false) Boolean false -
disabled 禁用(保色相整体降透明;透明拦截层盖住格子与重发行,点击与键入全部拦截) Boolean false -
disabled-keyboard 点击不唤起系统键盘(隐藏输入框不渲染):与自定义键盘(如 n-keyboard-number)搭配,值经 v-model 由外部驱动 Boolean false -
disabled-dot 值中过滤小数点(数字键盘在部分端仍可键入 ".",验证码场景默认剔除) Boolean true -
adjust-position 键盘弹起时是否自动上推页面(原生避让机制;建议本页配置 softinputMode: adjustResize,见 n-input readme) Boolean true -
cursor-spacing 光标与键盘保持的距离(px):键盘弹起时原生上推量按此值计算(与 n-input 同默认 20) Number 20 -
confirm-type 键盘确认键(右下角按钮)文字 String done send<br/>search<br/>next<br/>go<br/>done
confirm-hold 点击键盘确认键后不收起键盘 Boolean false -
show-resend 格子下方显示重发行(重新发送 / 倒计时;点击派发 send,倒计时由 ref.start() 启动) Boolean false -
seconds 重发倒计时秒数(start() 时生效,小于 1 按 1 处理) Number 60 -
custom-class 挂到根节点的额外 class(类需定义在组件样式表内) String "" -
custom-style 根节点行内样式,如 "margin-top:20px" String "" 与 css 相同

事件 ​

事件名 说明 回调参数
update:model-value 值变化(v-model 通道):键入 / 退格 / 粘贴 / 外部赋值清洗后的值 新值字符串
change 值变化时触发(与 update:model-value 同参同发) 清洗后的当前值
finish 输入满 maxlength 位时触发(从不满到满的跳变才发;同时收起系统键盘) 完整值字符串
focus 聚焦时触发(原生键盘模式为原生聚焦事件对象;disabled-keyboard 模式为点击格子区事件对象) 事件对象
blur 失焦时触发(仅原生键盘模式有原生失焦源) 事件对象
confirm 点击键盘确认键时触发(仅原生键盘模式) 事件对象
send 点击重发行(可发送态)时触发,随后进入「正在发送」;接口成功调 ref.start()、失败调 ref.reset() -
countdown 重发倒计时每秒触发 剩余秒数
end 重发倒计时结束、回到可发送状态时触发 -

方法(经 ref 调用) ​

方法名 说明 参数
clear 清空值(验证码校验失败重输场景);input/change/update 通道照常发出,焦点不受影响 -
start 开始重发倒计时(send 接口成功后调用);每秒派发 countdown、结束派发 end -
reset 重置重发行为可发送态(send 接口失败时调用;倒计时进行中也可强制复位) -

记录 · 思考 · 创作