微信小程序实现车牌号键盘

2023-11-20

<view class="page">
  <!-- 车牌号码输入框 -->
  <view class="carNumber">
    <view class="weui-cells__title">请输入您要缴费的车牌号码</view>
    <!-- 车牌号头两位 -->
    <view class="carNumber-items">
      <view class="carNumber-items-box" bindtap='openKeyboard'>
        <view class="carNumber-items-province carNumber-items-box-list">{{carnum[0] || ''}}</view>
        <view class="carNumber-items-En carNumber-items-box-list">{{carnum[1] || ''}}</view>
      </view>
      <!-- 常规 -->
      <view class="carNumber-item" bindtap='openKeyboard'>{{carnum[2] || ''}}</view>
      <view class="carNumber-item" bindtap='openKeyboard'>{{carnum[3] || ''}}</view>
      <view class="carNumber-item" bindtap='openKeyboard'>{{carnum[4] || ''}}</view>
      <view class="carNumber-item" bindtap='openKeyboard'>{{carnum[5] || ''}}</view>
      <view class="carNumber-item" bindtap='openKeyboard'>{{carnum[6] || ''}}</view>
      <!-- 新能源 -->
      <view class="carNumber-item {{showNewPower ? '': 'carNumber-item-newpower'}}">
        <view wx:if="{{!showNewPower}}" bindtap='showPowerBtn'>
          <view class="carNumber-newpower-add">
            <text>+</text></view>
        </view>
        <view wx:if="{{showNewPower}}" bindtap='openKeyboard'>
          {{carnum[7]}}
        </view>
      </view>
    </view>
  </view>
 
  <!-- 提交车牌 -->
  <button class="carNumberBtn" bindtap='submitNumber' style="background: green;color:#fff;" type="default">确定</button>
 
  <!-- 虚拟键盘 -->
  <view class="keyboard" hidden='{{!KeyboardState}}'>
    <view class="keyboardClose">
    <view class="keyboardClose_btn1" bindtap='deleteAll'>清空</view>
      <view class="keyboardClose_btn2" bindtap='closeKeyboard'>关闭</view>
    </view>
    <!-- 省份简写键盘 -->
    <view class="keyboard-item" hidden="{{carnum[0]}}">
      <view class="keyboard-line" wx:for="{{provinces}}" wx:key="index">
        <view class="keyboard-btn" wx:for="{{item}}" wx:key="index" data-val="{{itemlist}}" wx:for-item="itemlist" bindtap='bindChoose'>{{itemlist}}</view>
      </view>
      <view class="keyboard-del" bindtap='bindDelChoose'>
        <text class="font_family icon-shanchu keyboard-del-font"></text>
      </view>
    </view>
    <!-- 车牌号码选择键盘 -->
    <view class="keyboard-item iscarnumber" hidden="{{!carnum[0]}}">
      <view class="keyboard-line" wx:for="{{numbers}}" wx:key="index">
        <view class="keyboard-btn" wx:for="{{item}}" wx:key="index" data-val="{{itemlist}}" wx:for-item="itemlist" bindtap='bindChoose'>{{itemlist}}</view>
      </view>
      <view class="keyboard-del" bindtap='bindDelChoose'>
        <text class="font_family icon-shanchu keyboard-del-font"></text>
      </view>
    </view>
  </view>
</view>
/* pages/parking_home/parking_home.wxss */

.page {
  background: #fff;
  position: absolute;
  top: 0;
  bottom: 0;
  width: 100%;
}

.weui-cells__title {
  margin-top: .77em;
  margin-bottom: .3em;
  padding-left: 30rpx;
  padding-right: 30rpx;
  color: #999;
  font-size: 28rpx;

}

/* 虚拟键盘 */
.keyboard {
  height: auto;
  background: #d1d5d9;
  position: fixed;
  bottom: 0;
  width: 100%;
  left: 0;
}

.keyboard-item {
  padding: 10rpx 2rpx 25rpx 2rpx;
  position: relative;
  display: block;
}

/* 关闭虚拟键盘 */
.keyboardClose {
  height: 70rpx;
  background-color: #f7f7f7;
  overflow: hidden;
}

.keyboardClose_btn1 {
  float: right;
  line-height: 70rpx;
  font-size: 30rpx;
  padding-right: 30rpx;
  color: red;
}

.keyboardClose_btn2 {
  float: right;
  line-height: 70rpx;
  font-size: 30rpx;
  padding-right: 30rpx;
  color: orange;
}

/* 虚拟键盘-省缩写 */

/* 虚拟键盘-行 */
.keyboard-line {
  margin: 0 auto;
  text-align: center;
}

.iscarnumber .keyboard-line {
  text-align: center;
  margin-left: 5rpx;
}

/* 虚拟键盘-单个按钮 */
.keyboard-btn {
  font-size: 25rpx;
  color: #333333;
  background: #fff;
  display: inline-block;
  padding: 18rpx 0;
  width: 63rpx;
  text-align: center;
  box-shadow: 0 6rpx 5rpx 0 #999999;
  border-radius: 10rpx;
  margin: 12rpx 6rpx;
  box-sizing: border-box;
}

.keyboard-btn:active {
  font-size: 25rpx;
  color: #333333;
  background: #999999;
  display: inline-block;
  padding: 18rpx 0;
  width: 63rpx;
  text-align: center;
  box-shadow: 0 6rpx 5rpx 0 #999999;
  border-radius: 10rpx;
  margin: 12rpx 6rpx;
}

/* 虚拟键盘-删除按钮 */
.keyboard-del {
  font-size: 34rpx;
  color: #333333;
  background: #A7B0BC;
  display: inline-block;
  padding: 4rpx 25rpx;
  box-shadow: 0 2rpx 0 0 #999999;
  border-radius: 10rpx;
  margin: 12rpx 6rpx;
  position: absolute;
  width: 40rpx;
  height: 61.5rpx;
  line-height: 61.5rpx;
  bottom: 26rpx;
  right: 16rpx;
}

.keyboard-del:active {
  font-size: 34rpx;
  color: #333333;
  background: #fff;
  display: inline-block;
  padding: 4rpx 25rpx;
  box-shadow: 0 2rpx 0 0 #999999;
  border-radius: 10rpx;
  margin: 12rpx 6rpx;
  position: absolute;
  width: 40rpx;
  height: 61.5rpx;
  line-height: 61.5rpx;
  bottom: 26rpx;
  right: 16rpx;
}

.keyboard-del-font {
  font-size: 20rpx;
}

/* 车牌号码 */
.carNumber-items {
  text-align: center;
}

.carNumber-items-box {
  width: 122rpx;
  height: 60rpx;
  border: 2rpx solid #CCCCCC;
  border-radius: 4rpx;
  display: inline-block;
  vertical-align: middle;
  position: relative;
  margin-right: 30rpx;
  border-radius: 10rpx;
}

.carNumber-items-box-list {
  width: 60rpx;
  height: 60rpx;
  line-height: 60rpx;
  text-align: center;
  display: inline-block;
  font-size: 36rpx;
  vertical-align: middle;
}

.carNumber-items-province {
  border-right: 1rpx solid #ccc;
}

.carNumber-items-box::after {
  content: "";
  width: 6rpx;
  height: 6rpx;
  position: absolute;
  right: -22rpx;
  top: 30rpx;
  border-radius: 50%;
  background-color: #ccc;
}

.carNumber-item {
  width: 60rpx;
	height: 60rpx;
	background-color: #ffffff;
	border-radius: 10rpx;
	border: 2rpx solid #cccccc;
  font-size: 36rpx;
  text-align: center;
  line-height: 60rpx;
  display: inline-block;
  margin: 0 4rpx;
  vertical-align: middle;
  transform: scale(1);

}

/* 新能源 */
.carNumber-item-newpower {
  width: 90rpx;
	height: 61rpx;
	background-color: #027aff;
  border-radius: 10rpx;
  color: #fff;
  font-size: 24rpx;
  line-height: 40rpx;
  text-align: center;
}

.carNumber-newpower-add {
  font-size: 24rpx;
  line-height: 58rpx;
}
.carNumber-newpower-add text{
  font-size: 36rpx;
  margin-right: 4rpx;
}

/* 确认按钮 */
.carNumberBtn {
  border-radius: 4rpx;
  margin: 80rpx 40rpx;
}
Page({
 
  /**
   * 页面的初始数据
   */
  data: {
    // 省份简写
    provinces: [
      ['京', '沪', '粤', '津', '冀', '晋', '蒙', '辽', '吉', '黑'],
      ['苏', '浙', '皖', '闽', '赣', '鲁', '豫', '鄂', '湘'],
      ['桂', '琼', '渝', '川', '贵', '云', '藏'],
      ['陕', '甘', '青', '宁', '新'],
    ],
    // 车牌输入
    numbers: [
      ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
      ["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"],
      ["A", "S", "D", "F", "G", "H", "J", "K", "L"],
      ["Z", "X", "C", "V", "B", "N", "M"]
    ],
    carnum: [],
    showNewPower: false,
    KeyboardState: true
  },
  // 选中点击设置
  bindChoose(e) {
    if (!this.data.carnum[6] || this.data.showNewPower) {
      var arr = [];
      arr[0] = e.target.dataset.val;
      this.data.carnum = this.data.carnum.concat(arr)
      this.setData({
        carnum: this.data.carnum
      })
    }
    if(this.data.carnum[6]){
      this.setData({
        // showNewPower: true,
        KeyboardState: true
      })
    }
  },
  bindDelChoose() {
    if (this.data.carnum.length != 0) {
      this.data.carnum.splice(this.data.carnum.length - 1, 1);
      this.setData({
        carnum: this.data.carnum
      })
    }
    
  },
  showPowerBtn() {
    this.setData({
      showNewPower: true,
      KeyboardState: true
    })
  },
  closeKeyboard() {
    this.setData({
      KeyboardState: false
    })
  },
  openKeyboard() {
    this.setData({
      KeyboardState: true
    })
  },
  //清空按钮
  deleteAll(){
    this.setData({
      carnum:[],
    })
  },
  // 提交车牌号码
  submitNumber() {
    if(this.data.carnum.length<7){
      wx.showToast({
        title: '请输入完整的车牌!',
        icon:'none',
        duration: 2000,
      })
    }
    if (this.data.carnum[6]) {           
      var carno=this.data.carnum;
      var carnonew=carno.join('');
      console.log(carnonew);
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },
 
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
 
  },
 
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
 
  },
 
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
 
  },
 
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
 
  },
 
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
 
  },
 
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
 
  },
 
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
 
  }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序实现车牌号键盘 的相关文章

随机推荐

  • vue整合ueditor

    一 前端代码 Ueditor官网地址为 http ueditor baidu com website download html ueditor 下载好之后 将Jsp版本解压 解压后文件夹改名为ueditor 将文件夹中的jsp目录删掉 之
  • Elasticsearch7 清空指定Index 相关数据

    注意 Elasticsearch7 起 Index索引已经不支持创建指定Type 类型 默认取值为 doc Elasticsearch7 清空指定Index 语法 POST 请求 http es 服务器地址 索引名称 delete by q
  • go 进阶 gin实战相关: 五. gin_scaffold 企业脚手架

    目录 一 gin scaffold 企业级脚手架 二 gin scaffold 脚手架安装及使用演示 文件分层解释 开始使用 1 配置开启go mod 功能 2 下载 安装 gin scaffold 3 整合 golang common 4
  • 原生js php ajax,原生Ajax怎么写

    写原生Ajax的方法 首先创建XMLHttpRequest对象 然后编写回调函数onreadystatechange 接着配置请求信息 最后发送请求即可 Ajax Asynchronous JavaScript and XML的缩写 是一种
  • C#使用NuGet包播放视频之二————读取RTSP流

    RTSP流的读取 上篇文章做到读取本地摄像头 基本事都做完了 这篇文章将RTSP流加进去 双击窗体中ToolStrip的RTSP 为之添加事件 事件中编写代码如下
  • Yii2框架(一)安装及目录结构

    如题 对 你要相信自己的眼睛 你没看错确实是Yii2框架 现在都2020年了 刚刚开始折腾Yii2框架难免有些过时 但是没办法 公司目前的项目是基于Yii2开发的 嘿 你说怎么这么巧 我还没用过Yii2框架 没办法 看手册呗 这玩意 万变不
  • Vue2运行报错SyntaxError: Cannot use import statement outside a module

    问题描述 像配置vue3那样配置vue config js的路径代理 代替src后 报错 语法错误 不能在模块外部使用导入语句 原因 模块语法一个是CommonJS module 一个是 ES6 module vue config js里的
  • Google Voice账号的具体保号教程

    Google Voice 官方号码回收规则 https www google com intl zh CN googlevoice program policies html 在9个月内你的Google Voice没拔打电话或接收短信 你的
  • Hbase使用shell命令报错大集锦:

    一 Hbase使用shell命令出现报错 PleaseHoldException Master is initializing 解决办法 0 保证hbase运行着的 1 删除HDFS里hbase文件夹 hdfs dfs rm r hbase
  • 蓝牙BLE连接设备报错onClientConnectionState() - status=133解决方法

    S905平台 Android 5 1 1 WIFI 蓝牙芯片AP6255 客户某蓝牙设备使用他们专用的APK连接不上 查logcat信息如下 D BluetoothAdapter 5097 stopLeScan D BluetoothAda
  • Arduino智能小车随笔(一)

    Arduino智能小车随笔 一 看到小孩的各种STEM课程很火 收费又老贵 就想着不如自己和小孩一起学着做个arduino智能小车 即能让女儿学点编程 又能省了智商税 一举两得 然而到了后面女儿基本上只帮我接线 arduBlock实在无法支
  • ZooKeeper踩坑

    一 下载安装包时要下载文件名中带有bin的安装包 否则会报错 找不到或无法加载主类 org apache zookeeper server quorum QuorumPeerMain Error contacting service 这是由
  • Alluxio集群环境搭建,救救孩子!

    写在前面 最近的一段时间内我会做HDFS Alluxio HBase相关的开发工作 我会继续学习并分享不限于这些组件的知识 正常来说 搭建个集群环境根本不需要专门写个文章 但是这次我必须写 顺带必须小吐槽一下 Alluxio官方文档搭建集群
  • python程序填空题 快乐的数字_Python习题之快乐的数字

    快乐的数字 描述 编写一个算法来确定一个数字是否 快乐 快乐的数字按照如下方式确定 从一个正整数开始 用其每位数的平方之和取代该数 并重复这个过程 直到最后数字要么收敛等于1且一直等于1 要么将无休止地循环下去且最终不会收敛等于1 能够最终
  • Spring Boot整合ElasticSearch

    一 ES客户端 ES提供多种不同的客户端 1 TransportClient ES提供的传统客户端 官方计划8 0版本删除此客户端 2 RestClient RestClient是官方推荐使用的 它包括两种 REST Low Level C
  • vs+qt新建ui项目

    新建项目入门参考教程 新建项目入门参考教程 手动调整UI及程序编写 手动调整UI及程序编写 Qss基础 Qt part 6 QSS Qt样式表 界面美化1 Qt part 7 QSS参考样式表 界面美化2 Qt part 8 QSS 按键菜
  • ArcGIS中KML/KMZ转为.shp文件

    kml kmz到 gt layer到 gt shp 1 打开ArcMap gt ArcToolbox 2 在ArcToolbox中选择 转换工具 gt 由KML转出 gt KML转图层 3 在 KML转图层 的弹出框中 选择并导入KML文件
  • numpy基本矩阵操作

    矩阵乘法 numpy当中常用的矩阵乘法有两种 numpy dot和numpy matmul 当对象是2D矩阵的时候 这两个函数都是进行最正常的矩阵乘法 import numpy as np a np array 1 2 3 4 b np a
  • java-ipfs-api.jar的食用方法

    引入java ipfs api jar 从仓库引入 在pom xml中添加仓库
  • 微信小程序实现车牌号键盘