Skip to content

Keyboard 自定义键盘

基础用法

  • 基于 sn-drawer 底部弹层封装的安全键盘,由组件接管输入,适合替代系统键盘的场景(配合 uni.hideKeyboard() 使用)。
  • type 支持五种键盘:数字(number)、整数(int)、密码全键盘(password)、身份证(idcard)、车牌(car)。
  • 通过 v-model 双向绑定输入内容,v-model:show 双向绑定弹层显示状态;输入变化触发 change,点击完成键触发 confirm 并收起键盘。
  • maxlength 限制最大输入长度(车牌键盘不受限制);shuffle 开启后每次打开随机打乱字符键顺序(功能键位置固定)。
  • 头部默认显示"安全键盘,放心输入"提示,showInput 开启(默认)且有输入内容时改为显示实时输入内容。
  • 长按退位键 1000ms 一键清空(longpress 控制,默认开启)。
vue
<template>
	<sn-button text="打开数字键盘" @click="show = true"></sn-button>
	<sn-keyboard type="number" v-model:show="show" v-model="value" :maxlength="10" @confirm="onConfirm"></sn-keyboard>
</template>

<script lang="uts" setup>
const show = ref<boolean>(false)
const value = ref<string>('')

function onConfirm(): void {
	console.log(value.value)
}
</script>

更多演示请下载 demo 查看

密码与车牌键盘

密码键盘支持字母大小写切换与数字/符号模式切换;车牌键盘默认为省份简称汉字模式,可通过键盘上的模式切换键切到字母模式。

vue
<template>
	<sn-keyboard type="password" v-model:show="pwdShow" v-model="pwd" :maxlength="16"></sn-keyboard>
	<sn-keyboard type="car" v-model:show="carShow" v-model="car" :maxlength="8"></sn-keyboard>
</template>

<script lang="uts" setup>
const pwdShow = ref<boolean>(false)
const pwd = ref<string>('')
const carShow = ref<boolean>(false)
const car = ref<string>('')
</script>

自定义按键样式

通过 keyStyle / keyTextStyle / keyIconStyle / keyHoverStyle 定制按键,confirmType / confirmLevel / confirmText 定制完成键。

vue
<template>
	<sn-keyboard type="number" v-model:show="show" v-model="value" confirm-type="success" confirm-level="second"
		confirm-text="确定" key-gap="$6"
		key-style="background-color:#DBEAFE;border-radius:8px;border:1px solid #BFDBFE;"
		key-hover-style="background-color:#BFDBFE;"
		key-text-style="color:#1D4ED8;font-size:18px;font-weight:600;"></sn-keyboard>
</template>

<script lang="uts" setup>
const show = ref<boolean>(false)
const value = ref<string>('')
</script>

属性

参数说明类型默认值可选值
v-model输入内容String''-
v-model:show弹层显示状态Booleanfalsetrue | false
type键盘类型Stringnumbernumber | int | password | idcard | car
maxlength最大输入长度,0 表示不限制(车牌键盘不受此限制)Number0-
show是否显示弹层(也可仅用 v-model:showBooleanfalsetrue | false
showInput是否在头部实时显示已输入内容(内容非空时替换安全提示)Booleantruetrue | false
longpress是否开启长按退位键 1000ms 一键清空Booleantruetrue | false
maskClose点击遮罩是否关闭Booleantruetrue | false
maskOpacity遮罩透明度Number0.3-
preventBack是否阻止返回键关闭Booleantruetrue | false
aniTime弹层动画时长,支持 $ 简写,空时取动画长时长String | Number''-
drawerCustomStyle自定义内部抽屉弹层样式UTSJSONObject | String''-
drawerHeight弹层高度,空时按键盘类型自动设置(number/idcard/int 为 44%,password 为 52%,car 汉字模式为 60% 等)String | Number''-
padding弹层内边距String8px 6px 30px 6px-
confirmType完成键的功能色Stringprimaryprimary | info | success | error | warning
confirmLevel完成键的颜色等级Stringfirstfirst | second | third | least
confirmText完成键文本String完成-
shuffle是否每次打开时随机打乱字符键顺序(功能键位置固定)Booleanfalsetrue | false
keyGap按键间距,支持 $ 简写String | Number3-
keyStyle自定义普通按键样式UTSJSONObject | String''-
keyClass普通按键外部类String''-
keyTextStyle自定义按键文字样式UTSJSONObject | String''-
keyTextClass按键文字外部类String''-
keyIconStyle自定义按键图标样式UTSJSONObject | String''-
keyIconClass按键图标外部类String''-
keyHoverStyle自定义按键按下态样式UTSJSONObject | String''-
confirmKeyStyle自定义完成键样式UTSJSONObject | String''-
confirmKeyClass完成键外部类String''-
confirmKeyTextStyle自定义完成键文字样式UTSJSONObject | String''-
confirmKeyTextClass完成键文字外部类String''-
confirmKeyHoverStyle自定义完成键按下态样式UTSJSONObject | String''-
headerStyle自定义头部样式UTSJSONObject | String''-
headerClass头部外部类String''-
headerTextStyle自定义头部文字样式UTSJSONObject | String''-
headerTextClass头部文字外部类String''-
customStyle自定义根节点样式UTSJSONObject | String''-
customClass根节点外部类String''-

事件

名称类型说明
update:show(value: boolean) => Void弹层显示状态变化时触发(配合 v-model:show
change(value: string) => Void输入内容变化(输入、删除、清空)时触发
confirm() => Void点击完成键时触发,随后自动收起键盘
close() => Void点击头部关闭按钮时触发
open() => Void弹层打开动画结束后触发
close-anim-end() => Void弹层关闭动画结束后触发

方法

名称参数返回值描述
open--打开键盘弹层(开启 shuffle 时会先打乱字符键顺序)
close--收起键盘弹层

使用 MIT 协议