NumberKeyboard 数字键盘

介绍

虚拟数字键盘,可以配合密码输入框组件或自定义的输入框组件使用。

代码演示

默认样式

数字键盘提供了 inputdeleteblur 事件,分别对应输入内容、删除内容和失去焦点的动作。

<z-cell title="弹出默认键盘" is-link @click="show = true" />
<z-number-keyboard
  :show="show"
  @blur="show = false"
  @input="onInput"
  @delete="onDelete"
/>
import { ref } from 'vue';
import { useToast } from '../../uni_modules/zebra-ui'
const toast = useToast()
const show = ref(false)
const onInput = (value: string) => toast.showToast(value)
const onDelete = () => toast.showToast('删除')

带右侧栏的键盘

将 theme 属性设置为 custom 来展示键盘的右侧栏,常用于输入金额的场景。

<z-number-keyboard
  :show="show"
  theme="custom"
  extra-key="."
  close-button-text="完成"
  @blur="show = false"
  @input="onInput"
  @delete="onDelete"
/>

身份证号键盘

通过 extra-key 属性可以设置左下角按键内容,比如需要输入身份证号时,可以将 extra-key 设置为 X

<z-cell plain type="primary" @touchstart.stop="show = true">
  弹出身份证号键盘
</z-cell>
<z-number-keyboard
  :show="show"
  extra-key="X"
  close-button-text="完成"
  @blur="show = false"
  @input="onInput"
  @delete="onDelete"
/>

键盘标题

通过 title 属性可以设置键盘标题。

<z-cell plain type="primary" @touchstart.stop="show = true">
  弹出带标题的键盘
</z-cell>
<z-number-keyboard
  :show="show"
  title="键盘标题"
  extra-key="."
  close-button-text="完成"
  @blur="show = false"
  @input="onInput"
  @delete="onDelete"
/>

配置多个按键

当 theme 为 custom 时,支持以数组的形式配置两个 extra-key

<z-cell plain type="primary" @touchstart.stop="show = true">
  弹出配置多个按键的键盘
</z-cell>
<z-number-keyboard
  :show="show"
  theme="custom"
  :extra-key="['00', '.']"
  close-button-text="完成"
  @blur="show = false"
  @input="onInput"
  @delete="onDelete"
/>

随机数字键盘

通过 random-key-order 属性可以随机排序数字键盘,常用于安全等级较高的场景。

<z-cell @touchstart.stop="show = true"> 弹出配置随机数字的键盘 </z-cell>
<z-number-keyboard
  :show="show"
  random-key-order
  @blur="show = false"
  @input="onInput"
  @delete="onDelete"
/>

双向绑定

可以通过 v-model 绑定键盘当前输入值,并通过 maxlength 属性来限制输入长度。

<z-field
  v-model="valueModel"
  label="双向绑定"
  readonly
  clickable
  @click="showValue = true"
/>
<z-number-keyboard
  v-model="valueModel"
  :show="showValue"
  :maxlength="6"
  @blur="showValue = false"
/>
import { ref } from 'vue';
const show = ref(true);
const value = ref('');

API

Props

参数说明类型默认值
v-model当前输入值string-
show是否显示键盘boolean-
title键盘标题string-
theme样式风格,可选值为 customstringdefault
maxlength输入值最大长度number | stringInfinity
transition是否开启过场动画booleantrue
z-index键盘 z-index 层级number | string100
extra-key底部额外按键的内容string | string''
close-button-text关闭按钮文字,空则不展示string-
delete-button-text删除按钮文字,空则展示删除图标string-
close-button-loading是否将关闭按钮设置为加载中状态,仅在 theme="custom" 时有效booleanfalse
show-delete-key是否展示删除图标booleantrue
blur-on-close是否在点击关闭按钮时触发 blur 事件booleantrue
hide-on-click-outside是否在点击外部时收起键盘booleantrue
safe-area-inset-bottom是否开启底部安全区适配booleantrue
random-key-order是否将通过随机顺序展示按键booleanfalse

Events

事件名说明回调参数
input点击按键时触发key: string
delete点击删除键时触发-
close点击关闭按钮时触发-
blur点击关闭按钮或非键盘区域时触发-
show键盘完全弹出时触发-
hide键盘完全收起时触发-

Slots

名称说明
delete自定义删除按键内容
extra-key自定义左下角按键内容
title-left自定义标题栏左侧内容

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件

名称默认值描述
--z-number-keyboard-backgroundvar(--z-gray-2)-
--z-number-keyboard-key-height96rpx-
--z-number-keyboard-key-font-size56rpx-
--z-number-keyboard-key-active-colorvar(--z-gray-3)-
--z-number-keyboard-key-backgroundvar(--z-white)-
--z-number-keyboard-delete-font-sizevar(--z-font-size-lg)-
--z-number-keyboard-title-colorvar(--z-gray-7)-
--z-number-keyboard-title-height68px-
--z-number-keyboard-title-font-sizevar(--z-font-size-lg)-
--z-number-keyboard-close-padding0 var(--z-padding-md)-
--z-number-keyboard-close-colorvar(--z-primary-color)-
--z-number-keyboard-close-font-sizevar(--z-font-size-md)-
--z-number-keyboard-button-text-colorvar(--z-white)-
--z-number-keyboard-button-backgroundvar(--z-primary-color)-
--z-number-keyboard-z-index100-