Skip to content

CodeInput 验证码输入 ​

uvx-code-input 用于短信验证码等定长数字输入,支持方框、横线、圆点、原生键盘和外部自定义键盘。

平台兼容性 ​

AndroidiOS鸿蒙H5微信
3.9+4.11+4.61+4.0+4.41+

平台能力 ​

能力AndroidiOS鸿蒙H5微信
方框、横线、圆点和定长输入√√√√√
原生数字键盘和输入事件√√√√√
adjust-position 页面上推√√√×√
禁用原生键盘并由外部值驱动√√√√√

使用须知

  1. 内部原生输入框固定为 type="number";disabled-dot=true 时会移除所有小数点。
  2. model-value 非空时优先于 value,否则回退到 value;推荐统一使用 v-model。
  3. finish 在输入长度达到或超过 maxlength 时触发;输入值会先截断到最大长度。
  4. disabled-keyboard=true 时原生输入框被禁用,外部更新绑定值会触发 change 和可能的 finish,但不会触发 input 或 update:modelValue。
  5. adjust-position 仅在源码的 APP 与 MP-WEIXIN 条件编译中传给原生输入框。

基础用法 ​

vue
<template>
   <uvx-code-input v-model="code"></uvx-code-input>
</template>

<script lang="uts" setup>
// 验证码输入内容
const code = ref("");
</script>

横线模式 ​

vue
<uvx-code-input
   v-model="code"
   mode="line"
   :maxlength="4"
   :hairline="true"
></uvx-code-input>

圆点模式 ​

vue
<uvx-code-input
   v-model="code"
   :dot="true"
   :maxlength="4"
   :space="0"
></uvx-code-input>

预置内容和自动聚焦 ​

vue
<uvx-code-input
   v-model="code"
   :focus="true"
   :maxlength="6"
></uvx-code-input>

自定义样式 ​

vue
<uvx-code-input
   v-model="code"
   :size="42"
   :font-size="20"
   :bold="true"
   color="#3c9cff"
   border-color="#3c9cff"
   :space="8"
></uvx-code-input>

输入完成事件 ​

vue
<template>
   <uvx-code-input
      v-model="code"
      :maxlength="6"
      @change="handleChange"
      @finish="handleFinish"
   ></uvx-code-input>
</template>

<script lang="uts" setup>
// 验证码输入内容
const code = ref("");

/**
 * 监听输入变化
 * @param value 当前输入值
 * @returns null
 */
const handleChange = (value: string): void => {
   console.log("change", value);
};

/**
 * 监听输入完成
 * @param value 当前输入值
 * @returns null
 */
const handleFinish = (value: string): void => {
   console.log("finish", value);
};
</script>

自定义键盘模式 ​

vue
<uvx-code-input
   v-model="code"
   :disabled-keyboard="true"
></uvx-code-input>

此模式下由外部键盘修改 code,组件只负责显示和完成判断。

API ​

Props ​

属性说明类型默认值平台
value兼容预置值,model-value 为空时生效string | number""全部
model-value双向绑定值string | number""全部
adjust-position键盘弹起时是否自动上推页面booleantrueApp、微信
maxlength最大输入长度;无效值回退 6,负值按 0string | number6全部
dot是否用圆点替代已输入字符booleanfalse全部
mode显示模式box | linebox全部
hairline方框是否使用 0.5px 边框;横线模式使用 1pxbooleanfalse全部
space输入格间距string | number10全部
focus是否请求自动聚焦booleanfalse全部
bold字符是否加粗booleanfalse全部
color字符、圆点和光标颜色string""全部
font-size字符字号string | number18全部
size每个输入格的宽高string | number35全部
disabled-keyboard是否禁用原生输入层booleanfalse全部
border-color方框边框或横线颜色string""全部
disabled-dot是否过滤小数点booleantrue全部
u-style根节点自定义样式,CSS 字符串string""全部
u-class追加到根节点的外部样式类string""全部

Events ​

事件说明参数平台
update:modelValue原生键盘输入时更新绑定值value: string全部
input原生键盘输入时触发value: string全部
change规范化后的内容变化时触发value: string全部
finish内容长度达到 maxlength 时触发value: string全部

参考 ​

uvx-ui · uni-app x 组件库