微信小程序车牌键盘

微信小程序车牌键盘

微信小程序车牌键盘

项目背景

公司要做一个停车场微信小程序,支持临时车预支付以及支付记录查询等功能,其中涉及车牌输入的功能,为了提升用户体验,避免繁琐的输入,决定自己写一个键盘。

效果图如下

省份简写键盘如下:

省份简写键盘

英文简写键盘如下:

英文简写键盘

源代码

目录结构

目录结构

wxml文件内容

<view wx:if="{
   {isShow}}" class="vehicle-panel" style="height:430rpx;background-color:{
   {backgroundColor}}">
  <!--省份简写键盘-->
  <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>
    <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>
    <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='./delete.svg' 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>

json文件

{
  "component": true
}

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,
    }
  },
  data: {
    keyVehicle1: '陕京津沪冀豫云辽',
    keyVehicle2: '黑湘皖鲁新苏浙赣',
    keyVehicle3: '鄂桂甘晋蒙吉闽贵',
    keyVehicle4: '粤川青藏琼宁渝',
    keyNumber: '1234567890',
    keyEnInput1: 'QWERTYUIOP',
    keyEnInput2: 'ASDFGHJKL',
    keyEnInput3: 'ZXCVBNM',
  },
  methods: {
    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);
      }
    },
  }
});

wxss文件

:host {
  width: 100%;
}
.vehicle-panel {
  width: 100%;
  position: fixed;
  bottom: 0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  z-index: 1000;
}
.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-color: #0F4BA1;
  color: #fff;
  width: 150rpx;
  height: 80rpx;
}

使用方式

示例

<v-panel is-show="{
    {isShow}}" bindok="inputOk" binddelete="inputdelete" bindinputchange="inputChange" key-board-type="{
    {keyBoardType}}" backgroundColor="white" />

属性

属性名称 类型 默认值 说明
isShow 布尔(boolean) false 控制键盘是否显示,true显示,false不显示
buttonBorder 字符串(String) “1px solid #ccc” 控制键盘按钮边框,同css border属性
backgroundColor 字符串(String) #fff 控制键盘背景色,同css
keyBoardType 数字(Number) 1 控制键盘显示类型,1为省份简写,2为英文简写

事件

事件名称 触发情况 返回值
delete 删除按钮按下的时候触发 微信事件
ok 确定按钮按下时触发 微信事件
inputchange 输入按钮按下或者删除按钮按下时触发 输入的值

完毕!

以上代码仅供大家学习交流

转载于:https://www.cnblogs.com/rjhlovelife/p/9347189.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101531.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 淘宝装修html代码大全_上古卷轴装修材料代码

    淘宝装修html代码大全_上古卷轴装修材料代码http://blog.sina.com.cn/s/blog_506f1f940100hv9d.html淘宝网店装修HTML代码大全,包括淘宝装修代码,插入图片代码,公告滚动代码,不不一定要懂网站知识,不一定要懂HTML语言,看完这个就可以装修网店的,你不一定要全部看完,可以当成是一个字典查找就好了。一、插入图片代码:注:先把图片上传到网络相册网络地址,把它拷贝下来,

    2022年10月26日
  • clean code之代码可维护性_write clean code

    clean code之代码可维护性_write clean code如何优雅地进行错误处理(clean code阅读笔记之六)

  • js 数组删除指定元素「建议收藏」

    js 数组删除指定元素「建议收藏」js数组删除指定元素,js数组并没有提供直接删除某一指定元素的方法,因此需要我们稍作处理思路:首先找到要删除的元素的位置,然后使用splice方法进行删除示例代码删除数组s中的‘dd’元素vars=[‘s’,’dd’,’re’]s.splice(s.indexOf(‘dd’),1)console.log(s)运行效果至此完…

  • smartctl命令详解

    smartctl命令详解1、什么是S.M.A.R.T.SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及,每一块硬盘(包括IDE、SCSI)在运行的时候,都会将自身的若干参数记录下来。这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等。硬盘运行了几千小时后,很多内在的物理参数都会发生变化,某一参数超过报警阈值,则说明硬盘接近损坏,此时硬盘依然在工作,如果用户不理睬这个报警继续使用,那

  • Android开发常见错误及技巧

    1、无法使用网络:Permissiondenied(maybemissinginternetpermission)在AndroidMainifest.xml中增加允许使用网络选项(在<

    2021年12月24日
  • rider 激活码分享【2021.10最新】

    (rider 激活码分享)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~23…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号