键盘已做过处理第一位只能是省份简称,第二位只能输入字母,第三位以后可以输入数字加字母的组合,输入完成后有正则方法校验车牌号的合法性。高效率车牌号输入键盘,大大提升用户体验,增强用户输入车牌号的真实性

组件源码

html:
<view wx:if="{{isShow}}" class="vehicle-panel" style="height:430rpx;background-color:{{backgroundColor}}">
<view class='offkey' bindtap='offkr'>关闭键盘</view>
<!--省份简写键盘-->
<block wx:if="{{keyBoardType === 1}}"><view class="vehicle-panel-row"><view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyVehicle1}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view></view><view class="vehicle-panel-row"><view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyVehicle2}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view></view><view class="vehicle-panel-row"><view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyVehicle3}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view></view><view class="vehicle-panel-row-last"><view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-row-button-last' bindtap='vehicleTap' data-value="{{item}}" wx:for="{{keyVehicle4}}" style="border:{{buttonBorder}}" wx:for-index="idx"wx:key="idx">{{item}}</view></view>
</block>
<block wx:else><!--数字键盘  --><block wx:if="{{numBoard==true}}"><view class="vehicle-panel-row"><view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-row-button-number' bindtap='vehicleTap' data-value="{{item}}" wx:for="{{keyNumber}}" style="border:{{buttonBorder}}" wx:for-index="idx"wx:key="item">{{item}}</view></view></block><!--英文键盘  --><view class="vehicle-panel-row"><view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyEnInput1}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view></view><view class="vehicle-panel-row"><view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button' style="border:{{buttonBorder}}" wx:for="{{keyEnInput2}}" bindtap='vehicleTap' data-value="{{item}}" wx:for-index="idx" wx:key="idx">{{item}}</view><view hover-class="vehicle-hover" style="border:{{buttonBorder}}" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-row-button-img'><image src='../../images/delete.png' class='vehicle-en-button-delete' bindtap='vehicleTap' data-value="delete" mode='aspectFit'>删除</image></view></view><view class="vehicle-panel-row-last"><view hover-class="vehicle-hover" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-row-button-last' bindtap='vehicleTap' style="border:{{buttonBorder}}" data-value="{{item}}" wx:for="{{keyEnInput3}}" wx:for-index="idx"wx:key="idx">{{item}}</view><view hover-class="vehicle-hover" style="border:{{buttonBorder}}" hover-start-time="10" hover-stay-time="100" class='vehicle-panel-row-button vehicle-panel-ok' bindtap='vehicleTap' data-value="ok">完成</view></view>
</block>
</view>
css:
:host {width: 100%;
}.vehicle-panel {width: 100%;position: fixed;bottom: 0;display: flex;flex-direction: column;justify-content: center;z-index: 1000;
}
.offkey{text-align: center;font-size: 30rpx;
}
.vehicle-panel-row {display: flex;justify-content: space-between;align-items: center;
}.vehicle-panel-row-last {display: flex;justify-content: space-between;align-items: center;
}.vehicle-panel-row-button {background-color: #fff;margin: 5rpx;padding: 5rpx;width: 80rpx;height: 80rpx;text-align: center;line-height: 80rpx;border-radius: 10rpx;
}.vehicle-panel-row-button-number {background-color: #eee;
}.vehicle-panel-row-button-last {width: 90rpx;height: 90rpx;line-height: 90rpx;
}.vehicle-hover {background-color: #ccc;
}.vehicle-panel-row-button-img {display: flex;justify-content: center;align-items: center;
}.vehicle-en-button-delete {width: 55rpx;height: 85rpx;
}.vehicle-panel-ok {background-image: linear-gradient(0deg, #00a878 0%, #00cddc 100%),linear-gradient(#413f3f, #413f3f);color: #fff;width: 150rpx;height: 80rpx;font-size: 30rpx;
}
js:
Component({externalClasses: ['v-panel'],properties: {isShow: {type: Boolean,value: false,},buttonBorder: {type: String,value: "1px solid #ccc"},backgroundColor: {type: String,value: "#fff"},//1为省份键盘,其它为英文键盘keyBoardType: {type: Number,value: 1,},//true 显示键盘数字部分  numBoard: {type: Boolean,value: false,}},data: {keyVehicle1: '陕京津沪冀豫云辽',keyVehicle2: '黑湘皖鲁新苏浙赣',keyVehicle3: '鄂桂甘晋蒙吉闽贵',keyVehicle4: '粤川青藏琼宁渝',keyNumber: '1234567890',keyEnInput1: 'QWERTYUIOP',keyEnInput2: 'ASDFGHJKL',keyEnInput3: 'ZXCVBNM',},methods: {offkr:function(){let that = this;that.setData({isShow: false,})},vehicleTap: function(event) {let val = event.target.dataset.value;switch (val) {case 'delete':this.triggerEvent('delete');// this.triggerEvent('inputchange');break;case 'ok':this.triggerEvent('ok');break;default:this.triggerEvent('inputchange', val);}},}
});
json:
{"component": true
}

组件使用方法

<v-panel is-show="{{isShow}}" bindok="inputOk" binddelete="inputdelete" numBoard="{{numBoard}}" bindinputchange="inputChange" key-board-type="{{keyBoardType}}" backgroundColor="white" /><view class="text_con_focus" bindtap="bindFocus">车牌号:{{textValue}}<text class='focus_move'>|</text>
</view>
.focus_move {color: green;font-size: 30rpx;animation: focus 0.7s infinite;
}/* 光标动画 */@keyframes focus {from {opacity: 1;}to {opacity: 0;}
}
.text_con_focus{font-size: 30rpx;
}
var car_num = ""
Page({data: {textValue: "", //最终的输入内容keyBoardType: 1, //控制键盘显示类型,1为省份简写,2为英文简写numBoard: false, //控制  是否显示 英文简写中的数字部分键盘  true 为显示isShow: false, //控制键盘是否显示,true显示,false不显示},onShow: function () {},//控制键盘显示bindFocus: function(e) {let that = this;that.setData({isShow: true,})},//键盘输入事件inputChange: function(e) {let car_val = e.detail;let that = this;//超过8位后截取前8位if (that.data.textValue.length >= 8) {car_num = that.data.textValue.substr(0, 8)}else{car_num += car_val;}is_show(that, car_num)},//键盘删除事件inputdelete: function(e) {let that = this;car_num = car_num.substring(0, car_num.length - 1)console.log(car_num)is_show(that, car_num)},//确定事件inputOk:function(e) {let that = this;that.setData({isShow: false,})console.log(that.data.textValue)},
})//控制键盘的方法包装
function is_show(that,val) {//1为省份简写,2为英文简写if (val.length >= 1) {that.setData({keyBoardType: 2,})} else {that.setData({keyBoardType: 1,})}//控制  是否显示数字部分键盘if (val.length >= 2) {that.setData({numBoard: true,})} else {that.setData({numBoard: false,})}that.setData({textValue: car_num})
}
{"component": true,"usingComponents": {"v-panel": "../../componet/select_car_number/select_car_number"}
}

微信小程序自定义车牌号输入键盘-附源码相关推荐

  1. 微信小程序支付功能-服务器端实现(附源码)

    实现了小程序最新的V3版本支付功能, 包括:支付.支付通知.退款.退款通知. 服务器端使用java开发,springboot框架 源码链接在评论中 微信小程序支付功能-服务器端实现(附源码)_哔哩哔哩 ...

  2. 微信小程序实现快递查询功能(附源码)

    目录 效果图 项目结构 快递查询API获取 微信小程序后台配置 页面代码 express页面代码 logistics页面代码 注意问题(使用必看) 留言 效果图 项目结构 快递查询API获取 这里我使 ...

  3. springboot基于微信小程序的选课系统 毕业设计-附源码060000

    目 录 摘要 1 1 绪论 1 1.1研究背景 1 1.2开发意义 1 1.3系统开发技术的特色 1 1.4论文结构与章节安排 1 2选课系统小程序系统分析 3 2.1 可行性分析 3 2.2 系统流 ...

  4. 微信小程序实现购物商城(附源码)

    2018年本人做了一个淘宝购物返利的微信公众号,截至目前已运营了近5年的时间,也陆续积累了不少粉丝.近日,有部分用户反馈是否可以在公众号上展示促销商品列表,而且要具备搜索功能.为感谢粉丝朋友们的长期支 ...

  5. 小程序源码免费html5,微信小程序静态页面案例(附源码)

    微信小程序出来有段时间了,最近抽空写了个静态案例练练手.由于没有公测名额,无法测试,没有接口,所以先这样吧. 首先上图,整个app的演示是这样的: 图一 一.微信小程序和html5标签的区别: 二.w ...

  6. 微信小程序 推送模板教程 附源码

    无聊的时候 玩一下小功能踩踩坑  首先模板推送 需要准备一些材料 准备材料:1)公众号|小程序,添加选择的模板消息,2)在设置>开发设置页面,开通消息模板功能:如: 如果还没模板素材的 请新建一 ...

  7. html如何写微信弹窗,微信小程序 自定义弹窗实现过程(附代码)_而已_前端开发者...

    这篇文章主要介绍了微信小程序 自定义弹窗实现过程(附代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 小程序官网里弹出框一般都是类似下面形式: ...

  8. 微信小程序 输入车牌号(有新能源)

    微信小程序 输入车牌号(有新能源) <view class="page"><!-- 车牌号码输入框 --><view class="carN ...

  9. 微信小程序模拟车牌号键盘

    微信小程序模拟车牌号键盘 效果图 中文键盘 英文数字键盘 项目地址:https://github.com/ushars/keyboard

最新文章

  1. c语言结构体和函数,【提问】问个C语言结构体和函数的问题
  2. 一脸懵逼学习hadoop之HDFS的java客户端编写
  3. C++如何使用puff()的示例
  4. java ftp封装_使用FTP连接池封装Java工具类
  5. 数据库笔记2:SQL运算符
  6. zsh 使用通配符功能
  7. jQuery移出style
  8. 【Deep Learning 三】神经网络中的非线性激活函数之间的优缺点:sigmoid、tanh、ReLu、Leaky ReLu...
  9. 数据库原理—数据、数据库(一)
  10. 做游戏,学编程(C语言) 1 实现弹跳小球
  11. HDU2028 Lowest Common Multiple Plus【GCD+LCM】
  12. turtle库的学习
  13. Atitit.会员卡(包括银行卡)api的设计
  14. 网站加速之CDN与SCDN的区别?如何选择?
  15. (10万+浏览量)语句覆盖、条件覆盖(分支覆盖)、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖 的区别
  16. 看教程学虚幻四——粒子特效之魔法阵
  17. 【《Real-Time Rendering 3rd》 提炼总结】(二) 第二章 · 图形渲染管线 The Graphics Rendering Pipeline
  18. 大数据是什么?1分钟了解大数据的概念!
  19. 运筹学基础【三】 之 决策
  20. 基于CNONIX国家标准的出版社ERP系统建设分享

热门文章

  1. adb命令——上传和下载文件
  2. 怎么用java做随机选人软件_Java小程序:五人随机选一人并显示姓名
  3. 【计算机考研408】2023考研408相关题目预测总结
  4. 电商项目之电商数据库建表
  5. 多个相机拍摄定位_多相机视觉系统的坐标系统标定与统一及其应用
  6. 软件测试人员能用python做哪些事情?
  7. android webview卸载,安卓WebView清除localStorage
  8. 无线电信号调制【小波去噪】(MatlabPython代码实现)
  9. python 贴吧自动回复_python 几行代码实现自动回复功能
  10. 基于javaweb的中药药方管理系统(java+ssm+jsp+bootstrap+mysql)