更新记录
1.0.0(2026-07-03)
下载此版本
初始版本
平台兼容性
uni-app(4.0)
| Vue2 |
Vue2插件版本 |
Vue3 |
Vue3插件版本 |
Chrome |
Chrome插件版本 |
Safari |
Safari插件版本 |
app-vue |
app-vue插件版本 |
app-nvue |
Android |
Android插件版本 |
iOS |
鸿蒙 |
| √ |
1.0.0 |
√ |
1.0.0 |
√ |
1.0.0 |
√ |
1.0.0 |
√ |
1.0.0 |
- |
√ |
1.0.0 |
- |
- |
| 微信小程序 |
微信小程序插件版本 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
1.0.0 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
zv-numeric-keypad
数字键盘组件,支持手机号、金额、身份证、数字密码等多种模式,默认隐藏,从底部弹出。
基础用法
<zv-numeric-keypad v-model="mobile" mode="phone" />
参数说明
| 参数 |
类型 |
默认值 |
说明 |
| modelValue / v-model |
String |
'' |
绑定值 |
| visible / v-model:visible |
Boolean |
false |
是否显示键盘 |
| mode |
String |
phone |
键盘模式,见下方 |
| placeholder |
String |
'' |
占位文字 |
| contentStyle |
String |
'' |
内置触发区域样式 |
| trigger |
Boolean |
true |
是否显示内置触发区域,设为 false 时仅通过 visible 或 ref 控制 |
| showPoint |
Boolean |
随 mode |
是否显示小数点键 |
| showDelete |
Boolean |
true |
是否显示删除键 |
| showConfirm |
Boolean |
false |
是否显示确认键;为 true 时仅点击确认后回传数据 |
| showPreview |
Boolean |
true |
是否在键盘顶部显示输入预览 |
| maxLength |
Number |
随 mode |
最大输入长度,0 表示不限制 |
| deleteText |
String |
'' |
删除键文字,为空时显示 ⌫ |
| deleteStyle |
String |
'' |
删除键自定义样式(行内 style) |
| deleteActiveStyle |
String |
'' |
删除键按下时的自定义样式 |
| confirmText |
String |
确认 |
确认键文字 |
| confirmStyle |
String |
'' |
确认键自定义样式(行内 style) |
| confirmActiveStyle |
String |
'' |
确认键按下时的自定义样式 |
mode 模式
| mode |
说明 |
默认特性 |
phone |
手机号键盘 |
纯数字,最多 11 位,无小数点 |
amount |
金额键盘 |
支持小数点,最多 2 位小数 |
idcard |
身份证键盘 |
18 位,末位可为 X |
password |
数字密码键盘 |
纯数字,预览脱敏显示 |
passwordChaos |
乱序数字密码键盘 |
同 password,每次打开随机打乱数字 |
事件
| 事件 |
说明 |
回调参数 |
| change |
值变化(无确认键时实时触发,有确认键时点击确认触发) |
(value) |
| confirm |
点击确认 |
(value) |
| open |
键盘打开 |
— |
| close |
键盘关闭 |
— |
| update:modelValue |
v-model 更新 |
(value) |
| update:visible |
v-model:visible 更新 |
(visible) |
方法(通过 ref 调用)
| 方法 |
说明 |
| open() |
打开键盘 |
| close() |
关闭键盘 |
| toggle() |
切换显示/隐藏 |
使用示例
基础:点击触发区域弹出
<template>
<view>
<zv-numeric-keypad
v-model="mobile"
mode="phone"
placeholder="请输入手机号"
:contentStyle="contentStyle"
/>
</view>
</template>
<script>
export default {
data() {
return {
mobile: '',
contentStyle: 'line-height: 100rpx; text-align: right;'
}
}
}
</script>
通过 visible 控制显示
<zv-numeric-keypad
v-model="price"
v-model:visible="showKeypad"
mode="amount"
:trigger="false"
/>
<button @click="showKeypad = true">打开金额键盘</button>
通过 ref 手动调用
<zv-numeric-keypad ref="keypad" v-model="password" mode="passwordChaos" :trigger="false" />
<button @click="$refs.keypad.open()">打开密码键盘</button>
确认后回传
<zv-numeric-keypad
v-model="idcard"
mode="idcard"
:showConfirm="true"
@confirm="onConfirm"
/>
各模式示例
<!-- 手机号 -->
<zv-numeric-keypad v-model="mobile" mode="phone" placeholder="请输入手机号" />
<!-- 金额(可关闭小数点) -->
<zv-numeric-keypad v-model="price" mode="amount" :showPoint="true" />
<!-- 身份证 -->
<zv-numeric-keypad v-model="idcard" mode="idcard" />
<!-- 数字密码 -->
<zv-numeric-keypad v-model="pwd" mode="password" :maxLength="6" />
<!-- 乱序密码 -->
<zv-numeric-keypad v-model="pwd" mode="passwordChaos" :showConfirm="true" />
自定义删除 / 确认键样式
<zv-numeric-keypad
v-model="mobile"
mode="phone"
:showConfirm="true"
deleteText="删除"
:deleteStyle="deleteStyle"
:deleteActiveStyle="deleteActiveStyle"
confirmText="完成"
:confirmStyle="confirmStyle"
:confirmActiveStyle="confirmActiveStyle"
/>
data() {
return {
deleteStyle: 'color: #ff3b30; font-size: 28rpx; background: #fff; border-radius: 16rpx; box-shadow: 0 6rpx 0 #e5e5e5;',
deleteActiveStyle: 'color: #ff3b30; font-size: 28rpx; background: #f0f0f0; border-radius: 16rpx; transform: translateY(6rpx);',
confirmStyle: 'color: #fff; font-size: 32rpx; background: linear-gradient(180deg, #ff6b6b, #ee5253); border-radius: 16rpx; box-shadow: 0 6rpx 0 #c0392b;',
confirmActiveStyle: 'color: #fff; font-size: 32rpx; background: #ee5253; border-radius: 16rpx; transform: translateY(6rpx); box-shadow: 0 2rpx 6rpx rgba(238,82,83,0.3);'
}
}
也可通过 slot 完全自定义按钮内容:
<zv-numeric-keypad v-model="mobile" mode="phone" :showConfirm="true">
<template #delete>
<image src="/static/delete.png" style="width: 48rpx; height: 48rpx;" />
</template>
<template #confirm>
<text style="color: #fff;">提交</text>
</template>
</zv-numeric-keypad>