微信小程序车牌键盘

微信小程序车牌键盘

微信小程序车牌键盘

项目背景

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

效果图如下

省份简写键盘如下:

省份简写键盘

英文简写键盘如下:

英文简写键盘

源代码

目录结构

目录结构

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL用了Union后的排序问题

    SQL用了Union后的排序问题

    2021年10月15日
    288
  • 阿里云ssl证书续费多少钱_怎么获取ssl证书

    阿里云ssl证书续费多少钱_怎么获取ssl证书    简单记录一下这几天处理阿里云ssl证书续费的过程遇到的问题,希望对有疑问的同学有所帮助。首先证书快到截止日期阿里云会短信通知进行提前续费。在快过期的证书旁边会有一个续费的按钮(数字证书管理服务/ssl证书/证书管理)点击续费需要进行相关设置,一般保持默认即可,点击确定就会生成订单,支付成功之后,大概五分钟左右在证书管理列表中会出现一条新的证书记录,状态为已签发;续费的证书相当于是新的证书,并不是在原来的证书基础上延长有效期。故证书管理中会显示所有的证书记

    2022年10月4日
    0
  • mipi 协议简介[通俗易懂]

    mipi 协议简介[通俗易懂]转载于:https://blog.csdn.net/g_salamander/article/details/9163455以下是最近几个月在调试 MIPIDSI/CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点:一、D-PHY1、传输模式LP(Low-Power)模式:用于传输控制信号,最高速率10MHzHS(High-Speed)模式:用于高速传输数据,速…

    2022年4月30日
    237
  • JavaScript动漫作品(闭幕)

    JavaScript动漫作品(闭幕)

    2022年1月15日
    51
  • 不同卷积操作详解

    不同卷积操作详解不同卷积操作详解References:Aguidetoconvolutionarithmeticfordeeplearning,VincentDumoulinandFrancescoVisin;https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md.引言我们知道CNN在深度学习中占有举…

    2022年5月25日
    63
  • 单片机开发系列(一)之Keil 5 安装使用教程「建议收藏」

    单片机开发系列(一)之Keil 5 安装使用教程「建议收藏」、Keil安装教程   -Keil5安装包 链接:https://pan.baidu.com/s/1QitX09pqh6uZVdjj48Dllw密码:69yx   -下载链接中的安装包,进行安装,在安装完成后,开始以下的激活步骤   -运行安装的Keil5点击File-&gt;liselicensemanagement,将图片中的CID进行复制 …

    2022年5月23日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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