# NumberKeyboard 数字键盘
# 介绍
非系统内置的虚拟数字键盘。
# 使用指南
# 点击输入框打开数字键盘
<tms-number-keyboard bind:input="handleInput"/>
Component({
methods: {
handleInput({ detail }) {
console.log('当前输入框内容',detail.value);
}
}
})
# 拟物风格
<tms-number-keyboard style="simulacra"/>
# 扁平风格
<tms-number-keyboard style="flat"/>
# 小数类型
<tms-number-keyboard bind:input="handleInput" type="digit"/>
# 乱序类型
<tms-number-keyboard bind:input="handleInput" disorder/>
# 不使用默认输入框(自定义)
<tms-number-keyboard focus="{{customShow}}" custom value="{{customValue}}" bind:blur="handleCustomBlur"
bind:input="handleCustomInput">
<view class="custom-input" bindtap="focusCustomInput">{{customValue}}</view>
</tms-number-keyboard>
Component({
data:{
customShow: false,
customValue: '',
},
methods: {
handleCustomInput({ detail }) {
this.setData({
customValue: detail.value,
});
},
handleCustomBlur() {
this.setData({
customShow: false,
});
},
focusCustomInput() {
this.setData({
customShow: true,
});
},
}
})
# API
| 属性 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| value | 输入框内容 | string | ||
| placeholder | 占位符 | string | ||
| focus-placeholder | 聚焦时的placeholder | string | ||
| maxlength | 输入框内容最大长度 | number | -1(无限制) | |
| cursor-spacing | 指定光标与键盘的距离 单位px | number | 1 | |
| focus | 聚焦输入框,弹出键盘 | boolean | false | |
| disabled | 是否禁用输入框 | boolean | false | |
| disable-paste | 是否禁用长按粘贴文本 | boolean | false | |
| custom | 自定义输入框,不使用默认。 | boolean | false | |
| type | 整数(number)或小数(digit)类型 | string | number | |
| style | 键盘样式风格 flat/simulacra | string | flat | |
| title | 键盘上方标题 可为空 | string | ||
| disorder | 数字顺序随机打乱 | boolean | false |
# EVENTS
| 属性 | 说明 | 类型 |
|---|---|---|
| bind:focus | 输入框聚焦弹起键盘事件 | (event) => {} |
| bind:blur | 点击其它区域键盘收起时触发 | (event) => {} |
| bind:confirm | 点击完成按钮事件 | (event) => {} |
| bind:delete | 删除/回退按键事件 | (event) => {} |
| bind:input | 输入内容改变时触发 | (event) => {} |
| bind:push-up | 输入框与键盘距离小于设定值时内容上推事件 | ({detail:{lackHeight,value}}) => {} |
# css变量
// 输入框高度
--number-keyboard-input-height: 50px;
// 输入框背景色
--number-keyboard-input-background: #FFF;
// 输入框文本颜色
--number-keyboard-input-color: #000;
// 输入框font-size
--number-keyboard-input-font-size: 16px;
// 输入框padding-left
--number-keyboard-padding-left: 5px;
// 输入框padding-right
--number-keyboard-padding-right: 5px;
// 输入框禁用时透明度
--number-keyboard-disabled-opacity: .6;
// 输入框z-index
--number-keyboard-z-index: 1002;
// 透明遮罩层z-index
--number-keyboard-mask-z-index: 1000;
// 键盘标题文本颜色
--number-keyboard-title-color: #999;
// 键盘标题font-size
--number-keyboard-title-font-size: 16px;
// 数字键文本颜色
--number-keyboard-key-color: #111;
// 数字键font-size
--number-keyboard-key-font-size: 50rpx;
// 数字键font-weight
--number-keyboard-key-font-weight: 500;
// 键盘完成按钮文本颜色
--number-keyboard-hide-text-color: #3d84ff;
// 键盘功能键区完成按钮背景色
--number-keyboard-simulacra-action-background: #5a97f9;
# FAQ
# 当输入框位于页面底部时,上推页面并不能让输入框出现在正确的位置,需要补充页面高度,下面的demo提供了一种实现方案。
lackHeight:页面应该增大的高度,才能让输入框出现在期望的位置。
<tms-number-keyboard focus="{{focus}}" bind:blur="onBlur" bind:push-up="onPushUp"/>
<!-- 增加空元素填充高度 -->
<view style="height:{{lackHeight}}px"/>
Component({
data:{
lackHeight: 0,
focus: false,
},
methods: {
onPushUp({ detail }) {
// 设置页面底部空元素的高度
this.setData({
lackHeight: detail.lackHeight,
}, () => {
// 调用focus,重新定位输入框位置。
this.setData({
focus: true,
});
});
},
// 键盘隐藏时将空元素高度恢复成0
onBlur({ detail }) {
this.setData({
lackHeight: 0,
});
},
}
})
