// components/addCarNumber/index.js Component({ /** * 组件的属性列表 */ properties: { value: { //输入值 value: null }, placeholder: { type: String, value: '请输入车牌号' }, isAudit: { //是否禁用 type: Boolean, value: false }, disabled: { //是否禁用 type: Boolean, value: false }, }, /** * 组件的初始数据 */ data: { areaWordList: ['浙','京','沪','苏','粤','鲁','晋','冀','豫','川','渝','辽','吉','黑','皖','鄂','湘','赣','闽','陕','甘','宁','蒙','津','贵','云','桂','琼','青','新','藏','港','澳','台'], //地域中文表 numberList: [],//数字表 wordList: [], //字母表 show: false, //是否显示键盘弹窗 showAreaWord: true, //是否显示地域中文表 showCompleteButton: false //是否显示完成按钮 }, /** * 组件的方法列表 */ methods: { // 点击拉起键盘输入 showpopup() { if(!this.data.isAudit && !this.data.disabled) { this.setData({ show: true }) this.matchValue(this.data.value) } }, // 获得初始化英文数字数组 getNumberList() { let numberArr = Array.from(new Array(10)).map((item,index) => {return index.toString()}) let wordArr = Array.from(new Array(26)).map((item,index) => {return String.fromCharCode(index+65)}); wordArr = wordArr.concat(['挂','领','港','澳','学','警']) this.setData({ numberList: numberArr, wordList: wordArr, }) }, // 点击获得输入值 getValue(e) { let word = e.currentTarget.dataset.value let { value } = this.data; value = value?(value+word):word; if(value.length == 2) { let charCode = word.charCodeAt() if(charCode < 65 || charCode > 90) { wx.showToast({ title: '车牌号的第二位必需是字母', icon: 'none' }); return } } this.matchValue(value) }, // 判断输入值操作 matchValue(value) { if(value && value.length > 8) return; this.setData({ value }); this.triggerEvent('change', value); if(!this.data.showCompleteButton && value && value.length >= 7) { this.setData({ showCompleteButton: true }); } else if(this.data.showCompleteButton && value && value.length < 7) { this.setData({ showCompleteButton: false }); } }, // 删除 delete() { let { value } = this.data; value = value.slice(0, value.length-1); this.matchValue(value) }, // 关闭键盘 onClose() { this.setData({ show: false }) }, //取消 cancel() { this.setData({ show: false, value: null }) this.triggerEvent('change', this.data.value); } }, observers: { "value":function(value) { let showAreaWord = value?false:true this.setData({ showAreaWord: showAreaWord }); } }, lifetimes: { attached() { this.getNumberList(); this.matchValue(this.data.value) } } })