小程序组件库开发之车牌号专属键盘
小程序开发过程中可能会碰到和车牌信息相关的开发,这时候就需要输入车牌号,传统的键盘输入车牌号,需要打出汉字,再选择相应的字母数字,并不是特别方便,这里笔者专门开发了车牌号键盘,可以任意选择修改省份,数字和字母。
先看示例图:
组件主要代码如下:
// components/plate-number-keyboard/plate-number-keyboard.js
Component({
behaviors: [],
properties: {
show: { // 控制键盘显示隐藏
type: Boolean,
value: false
},
initValue: { // 初始化的值
type: String,
value: ""
}
},
data: {
plateNumber: "", // 键盘操作结果值
provinceList: {
line1: ['京', '津', '渝', '沪', '冀', '晋', '辽', '吉', '黑', '苏'],
line2: ['浙', '皖', '闽', '赣', '鲁', '豫', '鄂', '湘', '粤', '琼'],
line3: ['川', '贵', '云', '陕', '甘', '青', '蒙', '贵', '宁', '新'],
line4: ['藏', '使', '领', '警', '学', '港', '澳']
},
letterNumberList: {
line1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0],
line2: ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],
line3: ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],
line4: ['Z', 'X', 'C', 'V', 'B', 'N', 'M']
},
showProvince: true, // 是否显示省份面板,控制省份面板和字符面板显示
}, // 私有数据,可用于模板渲染
lifetimes: {
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
attached: function() {},
moved: function() {},
detached: function() {},
},
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
attached: function() {}, // 此处attached的声明会被lifetimes字段中的声明覆盖
ready: function() {
// 如果初始化有值,赋值,否则,置为空
this.setData({
plateNumber: this.data.initValue ? this.data.initValue : ''
})
},
pageLifetimes: {
// 组件所在页面的生命周期函数
show: function() {},
hide: function() {},
resize: function() {},
},
methods: {
/**
* 键盘面板切换操作,控制省份内容和字符内容显示
*/
_clickChangePlane: function() {
this.setData({
showProvince: !this.data.showProvince
})
},
/**
* 关闭键盘,将键盘隐藏
*/
_closeKeyboard: function(e) {
console.log(2)
this.setData({
show: false
})
},
/* 触发外部绑定事件,传递结果值 */
_handleResult: function() {
const myEventDetail = {
value: this.data.plateNumber // 传递到结果文本
};
// 触发外部绑定事件,传递结果参数
this.triggerEvent('getResult', myEventDetail);
},
/**
* 键盘主要键点击事件,将点击内容更新到plateNumber
*/
_handleClick: function(e) {
// 如果当前显示的省份面板,当即任意省份后,自动切换到字符面板,同时将结果值的第一个字符修改
if (this.data.showProvince) {
this.setData({
showProvince: false
})
}
let currentResult = this.data.plateNumber; // 当前的结果值
let currentText = e.currentTarget.dataset.text; // 当前的操作值
// 车牌号最多8位,大多数7位,新能源8位,控制不能超过8位数
if (currentResult.length < 8) {
this.setData({
plateNumber: currentResult + currentText
})
this._handleResult();
}
},
/**
* 删除回退点击事件
*/
_handleDelete: function() {
let currentText = this.data.plateNumber;
currentText = currentText.substring(0, currentText.length - 1);
// 当当前结果值长度大于0时,可执行删减操作
if (currentText.length >= 0) {
this.setData({
plateNumber: currentText
})
this._handleResult();
}
},
/**
* 防止点击穿透
*/
_preventDefault: function(e) {}
}
})
具体的说明文档,以及详细代码见下文链接:
小程序组件:车牌号键盘
觉得还可以的给个star,有问题可以留言。
欢迎关注博主——小圣贤君,有问题可以留言哦~