# miniprogram-keyboard-type
**Repository Path**: SevenDreamYang/miniprogram-keyboard-type
## Basic Information
- **Project Name**: miniprogram-keyboard-type
- **Description**: 小程序_键盘组件
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 12
- **Forks**: 1
- **Created**: 2020-04-06
- **Last Updated**: 2025-06-12
## Categories & Tags
**Categories**: weixin-lapp
**Tags**: None
## README
# 小程序键盘组件
  
## 说明
- 当前版本
**v1.2.0**
- npm 下载
```
npm i miniprogram-keyboard-type -S
```
- `* 为新增功能`
- 组件分别为 `弹窗式密码键盘` `车牌式车牌键盘` `* 输入框车牌键盘`
- * 适配 `DarkMode` [相关链接](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/darkmode.html)
- 使用说明
```JSON
"usingComponents": {
"Passwordkeyboard": "/您的路径/Passwordkeyboard/index"
}
```
```html
```
- 可修改样式(wxss)
| class类 | 备注 |
| :-----------: | :----------: |
| `right_key` | `删除键样式` |
| `btn-confirm` | `弹窗确认键` |
- 需求参数
| 参数 | 说明 | 类型 | 是否必传 | 备注 |
| ------------------------ | -------------- | --------- | -------- | ------------ |
| `title` | `标题` | `String` | `是` | |
| `valueLength` | `长度` | `Number` | `否` | `默认为6` |
| `anonymous` | `是否密文` | `Boolean` | `否` | `UI显示为 *` |
| `isShow` | `显示` | `Boolean` | `是` | |
| `zIndex` | `z-index 层级` | `Number` | `否` | `默认为50` |
| `safe-area-inset-bottom` | `ios安全底部` | `Boolean` | `否` | |
- 事件
| 事件 | 说明 | 参数 |
| :---------: | :----------: | :------------------: |
| `onCancel` | `取消时触发` | - |
| `onConfirm` | `确认时触发` | `{'value':'123456'}` |
## 输入框车牌键盘
- 说明
- 请`CarTypeInput` 与 `CarInputboard` 配合使用。
- `CarTypeInput` 可以在 `from` 中使用
- 与 `carKeyboard`与 `CarInputboard` 的不同
- 除样式相同外,删除了一些在使用`TypeInput` 不必要的参数和方法
- `CarInputboard` 不包含正则
- 为了更好的体验需要您帮助组件做个一个模拟失去焦点的功能
- 需要一个顶级`view`绑定一个点击事件在页面中
- `CarInputboard` 将它放在顶级`view`外
- 使用说明
```JSON
"CarTypeInput": "/component/CarTypeInput/index",
"CarInputboard":"/component/CarInputboard/index"
```
```html
```
```js
Page({
data: {
show:false,
value:'',
isblur:true,
},
//失去焦点时
blur(e){
this.setData({
show:false,
isblur:true,
})
},
//TypeInput 获取焦点(点击)触发
onfocus(e){
this.setData({
show:true,
isblur:false,
})
},
//点击键盘完成时触发
onConfirm(){
this.setData({
show:false,
isblur:true
})
},
getValue(e){
this.setData({
value:e.detail.value
})
}
})
```
- 可修改样式(wxss)
- `TypeInput`
| class类 | 备注 |
| :---------: | :----------: |
| `typeinput` | `输入框样式` |
- 需求参数
- `TypeInput`
| 参数 | 说明 | 类型 | 是否必传 | 备注 |
| :-----------: | :------------------: | :------: | :------: | :---------------: |
| `value` | `值` | `String` | 是 | |
| `height` | `input高` | `Number` | 否 | `默认60px` |
| `placeholder` | `输入框为空时占位符` | String | 否 | |
| `isBlur` | `是否失去聚焦` | Boolean | 是 | |
| `lineColor` | `光标颜色` | 16进制 | 否 | `默认#333` |
| `name` | `key值` | String | 否 | `from` 内使用必传 |
- `height` 影响光标高度
- `name` 在`from` 内使用必传
- `isBlur` true为失去焦点
- `CarInputboard`
| 参数 | 说明 | 类型 | 是否必传 | 备注 |
| :-------------------: | :-----------: | ------ | -------- | ---- |
| `isShow` | 是否显示键盘 | String | 是 | 必传 |
| `isBlur` | 是否失去聚焦 | Number | 是 | 必传 |
| `safeAreaInsetBottom` | `ios安全底部` | String | 否 | |
- `isBlur` true为失去焦点
- 事件
- `TypeInput`
| 事件 | 说明 | 参数 |
| :-------: | :----------: | :--: |
| `onfocus` | `获取焦点时` | - |
- `CarInputboard`
| 事件 | 说明 | 参数 |
| :-----------: | :--------------: | :----------------------------------: |
| `ListenValue` | `监听值变化` | `’value‘:值,‘sub‘:长度,exp:正则信息` |
| `onConfirm` | `点击完成时触发` | - |
## 车牌式车牌键盘
- 说明
- 请`carKeyboard` 与 `carKeyInput` 配合使用
- 注意事项
- 在需需要您使用`CarCardInput` 的 `onChangeCard` 获取的 `CarNumid` 传递给`CarCardboard` 组件
- 参考资料
- [中国车牌号规则](http://www.360doc.com/content/19/1018/10/48933397_867582489.shtml)
- [中华人民共和国民用机动车号牌](https://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E6%B0%91%E7%94%A8%E6%9C%BA%E5%8A%A8%E8%BD%A6%E5%8F%B7%E7%89%8C)
- 使用说明
```JSON
"CarCardInput": "/您的路径/CarCardInput/index"
"CarCardboard": "/您的路径/carKeyInput/index"
```
```HTML
```
```js
Page({
data: {
value:"",
valueStr:'',
CarNumId: 0,
show:false
},
getValue(e){
const value = e.detail.value;
this.setData({
value: value, // 值为数组
valueStr: value.join('').toString(), // 获得的车牌字符串
msg: e.detail.exp.msg || '' // 正则返回信息
})
},
// 当车牌类型卡片改变时触发
onChangeCard(e) {
this.setData({
CarNumId: e.detail.CarNumId
})
},
// 点击完成或点击输入框时触发(键盘展示关闭)
onClickBox(e){
const {show} = this.data;
this.setData({
show:!show
})
}
})
```
- 需求参数
- `CarCardInput`
| 参数 | 说明 | 类型 | 是否必传 | 备注 |
| :--------: | :--------------: | :-------: | :------: | :--: |
| `value` | `渲染值` | `Array` | `是` | |
| `showCard` | `是否显示切换卡` | `Boolean` | `否` | |
- `CarCardboard`
| 参数 | 说明 | 类型 | 是否必传 | 备注 |
| :----------------------: | :------------: | :-------: | :------: | :--: |
| `CarNumid` | `车牌类型下标` | `Number` | `是` | |
| `safe-area-inset-bottom` | `ios安全底部` | `Boolean` | `否` | |
- 事件
- `carKeyInput`
| 事件 | 说明 | 参数 |
| :----------: | :--------------------: | :--------: |
| `ChangeCard` | `当车牌类型卡片改变时` | `CarNumid` |
| `onClickBox` | `点击时触发` | - |
- `carKeyInput`
| 事件 | 说明 | 参数 |
| :-----------: | :--------------: | :----------------------------------: |
| `ListenValue` | `监听值变化` | `’value‘:值,‘sub‘:长度,exp:正则信息` |
| `onConfirm` | `点击完成时触发` | - |
## 乱序英文键盘(移除)
> 项目中留存,npm包中不包含英文乱序键盘
## 体验&作者微信
 
## git版本更新
`v1.2.202001002`
- 新增功能
- `CarCardInput` 新增是否显示切换卡
- 适配 DarkMode
- 更新名称
- `TypeInput(叫TypeInput可能打包不进去?)` ->`CarTypeInput`
`v1.1.20200515`
- 更新名称
- `CarCardboard->carKeyboard`
- `CarCardInput->carKeyInput`
- 新增组件
- `TypeInput` 和 `CarInputboard`
- 修复
- 修复了`CarCardboard`组件在页面进入如时闪的问题
- 其他
- 删除了一些不该有的打印日志和不必要参数
- 作者微信
`v1.1.20200411`
- `carKeyboard`
- 添加正则(实装)
- 键盘动画效果
- 车牌渲染效果
`v1.1.20200410`
- `Passwordkeyboard`
- 1.修复密码键盘还能多输1位的问题
- 2.密码键盘`ios`安全底部
- 3.输入位数提示
- `carKeyboard`
- 添加正则(未实装)