Vue H5 前端自定义车牌号输入键盘(支持新能源)

这篇具有很好参考价值的文章主要介绍了Vue H5 前端自定义车牌号输入键盘(支持新能源)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目介绍:

这个项目是基于 vue2+vant  写的录入车牌的键盘, 有需要的伙伴可以参考一下;


先看一下效果图:

h5车牌输入键盘,vue,h5,前端,vue.js,javascript,css3,html5

 h5车牌输入键盘,vue,h5,前端,vue.js,javascript,css3,html5

这个是组件的代码,直接在页面中引用即可,车牌号的值存在carNumber里面,在确定按钮中,讲完整的carNumber传到引用的页面中即可.

<template>
  <div class="keyboards">
    <div class="keyboards_title">输入车牌<span>(绿色背景为新能源车牌)</span> </div>
    <div>
      <ul class="input_box" @click="clickShowKeyboard">
        <li >{{ first }}</li>
        <li>{{ numArr[0] }}</li><span style="font-size: .5rem;line-height: .9rem;color:#ced0d2 ;">•</span>
        <li>{{ numArr[1] }}</li>
        <li>{{ numArr[2] }}</li>
        <li>{{ numArr[3] }}</li>
        <li>{{ numArr[4] }}</li>
        <li>{{ numArr[5] }}</li>
        <li>{{ numArr[6] }}</li>
      </ul>
    </div>
    <div class="keySure" @click="submitNumber">确定</div>
    <!-- 键盘-中英文 -->
    <van-popup v-model="showKeyboards" position="bottom" :overlay="false" overlay-class="displayNone">
      <div class="keyboards_keys">
        <div class="finish_key"><span @click="hidekeyboards">完成</span></div>
        <div class="finish_line"></div>
        <div class="key_box">
          <!-- 中文 -->
          <div v-if="checkLangages" class="chinese">
            <ul v-for="(item, index) in chineseList" :key="index">
              <li v-for="val in item" :key="val.id" :class="{ del: val.id === 99 || val.id === 98 }" @click="chooseChinese(val)">{{
                val.name }}</li>
            </ul>
          </div>
          <!-- 数字英文 -->
          <div v-else class="english">
            <ul v-for="(item, index) in englishList" :key="index">
              <li v-for="val in item" :key="val.id" :class="{ del: val.id === 99 || val.id === 97 }" @click="chooseEnglish(val)">{{
                val.name }}</li>
            </ul>
          </div>

        </div>
      </div>
    </van-popup>
  </div>
</template>

<script>
// import { submitCarNumber } from '../../api/global'
import { Toast } from 'vant';

export default {
  data() {
    return {
      first: '',
      numArr: [],
      showKeyboards: true,
      checkLangages: true,
      chineseList: [
        [
          { name: "京", id: 1 },
          { name: "津", id: 2 },
          { name: "冀", id: 3 },
          { name: "晋", id: 4 },
          { name: "蒙", id: 5 },
          { name: "辽", id: 6 },
          { name: "吉", id: 7 },
          { name: "黑", id: 8 },
          { name: "沪", id: 9 },
          { name: "苏", id: 10 }
        ],
        [
          { name: "浙", id: 11 },
          { name: "皖", id: 12 },
          { name: "闽", id: 13 },
          { name: "赣", id: 14 },
          { name: "鲁", id: 15 },
          { name: "豫", id: 16 },
          { name: "鄂", id: 17 },
          { name: "湘", id: 18 },
          { name: "粤", id: 19 },
          { name: "桂", id: 20 },
        ],
        [
          { name: "琼", id: 21 },
          { name: "渝", id: 22 },
          { name: "川", id: 23 },
          { name: "贵", id: 24 },
          { name: "云", id: 25 },
          { name: "藏", id: 26 },
          { name: "陕", id: 27 },
          { name: "甘", id: 28 },
          { name: "青", id: 29 },
          { name: "宁", id: 30 },
        ],
        [
          { name: 'ABC', id: 98 },
          { name: "新", id: 31 },
          { name: "使", id: 32 },
          { name: "领", id: 33 },
          { name: "警", id: 34 },
          { name: "学", id: 35 },
          { name: "港", id: 36 },
          { name: "澳", id: 37 },
          { name: "删除", id: 99 }
        ]
      ],
      englishList: [
        [
          { name: "1", id: 40 },
          { name: "2", id: 41 },
          { name: "3", id: 42 },
          { name: "4", id: 43 },
          { name: "5", id: 44 },
          { name: "6", id: 45 },
          { name: "7", id: 46 },
          { name: "8", id: 47 },
          { name: "9", id: 48 },
          { name: "0", id: 49 },
        ],
        [
          { name: "Q", id: 38 },
          { name: "W", id: 39 },
          { name: "E", id: 40 },
          { name: "R", id: 41 },
          { name: "T", id: 42 },
          { name: "Y", id: 43 },
          { name: "U", id: 44 },
          { name: "I", id: 45 },
          { name: "O", id: 46 },
          { name: "P", id: 47 },
        ],
        [
          { name: "A", id: 48 },
          { name: "S", id: 49 },
          { name: "D", id: 50 },
          { name: "F", id: 51 },
          { name: "G", id: 52 },
          { name: "H", id: 53 },
          { name: "J", id: 54 },
          { name: "K", id: 55 },
          { name: "L", id: 56 },

        ],
        [
          { name: '地区', id: 97 },
          { name: "Z", id: 57 },
          { name: "X", id: 58 },
          { name: "C", id: 59 },
          { name: "V", id: 60 },
          { name: "B", id: 61 },
          { name: "N", id: 62 },
          { name: "M", id: 63 },
          { name: "删除", id: 99 }
        ]
      ],
      carNUmber: ''
    }
  },
  methods: {
    // 唤醒键盘
    clickShowKeyboard() {
      this.showKeyboards = true
      if (!this.first) {
        this.checkLangages = true
      } else {
        this.checkLangages = false
      }
    },
    // 选择车牌号前面的汉字
    chooseChinese(val) {
      if (val.id === 97 || val.id === 98) {
        this.checkLangages = !this.checkLangages
      } else if (val.id === 99) {
        if (this.numArr.length === 0) {
          this.first = "";
        }
      } else {
        // 把选中的字赋值给第一个格,并且切换键盘
        this.first = val.name;
        this.checkLangages = false;
      }
    },
    // 选择车牌后面的数字和字母
    chooseEnglish(val) {
      if (val.id === 97 || val.id === 98) {
        this.checkLangages = !this.checkLangages
      } else if (val.id === 99) {
        this.numArr.pop()

        // 如果数字,字母被删光了,则切换到中文键盘
        if (this.numArr.length === 0) {
          this.checkLangages = true
        }
      } else {  //把选中的值push到numArr里面
        this.numArr.push(val.name)
        if (this.numArr.length > 7) {
          this.numArr.pop()
        }
      }
      this.carNUmber = this.first + this.numArr.join('')
      console.log(this.carNUmber);
    },
    // 完成,隐藏键盘
    hidekeyboards() {
      this.showKeyboards = false
    },
    // 提交车牌号
    submitNumber() {
      const carNumberReg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/
      if (carNumberReg.test(this.carNUmber)) {
        console.log(this.carNUmber, '确定按钮')
        // this.show_chinese = false;
        this.showKeyboards = false;
        this.$emit('sendCarNumber', this.carNUmber)
        // 清空上一次输入的车牌
        this.first = ''
        this.numArr = []
      } else {
        Toast('请输入正确的车牌号');
      }
      this.first = ''
      this.numArr = []
      this.checkLangages=true
    }
  }

}
</script>
<style lang="less" scoped>
.keyboards {
  width: 100%;
  box-sizing: border-box;

  .keyboards_title {
    margin: .3rem .5rem;
    font-size: .35rem;
    span{
      margin-left: 5px;
      font-size: .3rem;
      color: #45b94d;
    }
  }

  .input_box {
    display: flex;
    justify-content: center;
    width: 6.5rem;
    height: .9rem;
    margin: 0 auto .5rem;
    box-sizing: border-box;

    li {
      flex: 1;
      border: 1px solid #ced0d2;
      border-radius: 4px;
      margin: 2px;
      text-align: center;
      line-height: .8rem;
      font-size: .45rem;
    }

    li:last-child {
      background-color: #9eefa4;
    }

    // 动态样式
    .li_focus {
      border: 1px solid orange;
    }


  }

  .keySure {
    margin: auto;
    font-size: .4rem;
    width: 6.5rem;
    height: .9rem;
    text-align: center;
    line-height: .9rem;
    color: #fff;
    border-radius: .45rem;
    background-color: #333333;
  }

  .keyboards_keys {
    width: 7.5rem;
    margin: .2rem auto 0rem;
    // padding-bottom: .5rem;
    height: 5.7rem;
    background-color: rgb(211, 214, 221);

    .finish_key {
      width: 7.5rem;
      font-size: .3rem;
      // font-weight: 700;
      height: .6rem;
      line-height: .6rem;
      color: rgb(104, 105, 105);

      span {
        position: absolute;
        right: .38rem;
      }
    }

    .finish_line {
      width: 7.5rem;
      border-bottom: 1px solid rgb(178, 179, 180);
    }

    .key_box {
      ul {
        display: flex;
        justify-content: center;
        width: 7rem;
        height: .9rem;
        margin: .2rem auto .2rem;
        box-sizing: border-box;

        li {
          // flex: 1;
          width: .63rem;
          font-size: .35rem;
          // border: 1px solid red;
          background-color: #fff;
          border-radius: 5px;
          box-shadow: 1px 3px 1px #aaa;
          text-align: center;
          line-height: .78rem;
          margin: 2px;
          padding: 2px;
        }

        .del {
          width: .96rem;
          background-color: rgb(177, 183, 197);
        }

        .area {
          width: .9rem;
        }
      }
    }
  }
}
</style>

在页面中引用(这边只贴了引用部分的代码,其他的根据自己的页面去补充即可)文章来源地址https://www.toymoban.com/news/detail-786224.html

<template>
......
  <van-popup v-model="showKeyboards" round position="bottom" :style="{ height: '72%' }">
     <Keyboards @sendCarNumber="getcrNumber"></Keyboards>
  </van-popup>
......
</template>


<script>
 import Keyboards from '../components/keybords/index.vue'  //引入组件
 export default{
 components:{Keyboards},
 methods:{
   getcrNumber(val) {
   const carNumberReg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/
   if (carNumberReg.test(val)) {
     this.showKeyboards = false
     this.carNumber = val
   }
 },

}

 }


</script>

到了这里,关于Vue H5 前端自定义车牌号输入键盘(支持新能源)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 车牌号输入组件

    一个小组件,用于方便用户输入车牌号码 有时候我们开发过程中会遇到需要用户输入车牌号的情况,让客户通过自带键盘输入,体验不好且容易出错,例如车牌号是不能输入O和I的,因此需要有一个自定义的键盘,让客户输入正确的车牌号 1 布局设计 2 数据设计 把合法输入的

    2024年02月11日
    浏览(56)
  • 模拟生成车牌号

    任务描述 本关任务:编写一段能生成若干个车牌号的代码 在本题中,根据如下步骤随机生成若干个车牌号。 分行输入随机种子以及车牌号数量n,生成包含n个车牌号的列表并输出。 车牌号规则: 以’鄂A-‘或’鄂W-‘开头 长度总共为8位,后5位中包含最多2个字母字符,其余

    2024年02月16日
    浏览(50)
  • C练习——肇事卡车车牌号

    题目: 一辆卡车违反交通规则,撞人后逃跑。现场有3人目击事件,但没有记住车牌号,只记住了车号的一些特征。 甲说:“牌照前两位数字是相同的”,乙说:“牌照的后两位数字是相同的,但与前两位不同”,丙是为数学家,他说:“4位车号正好是一个整数的平方”。请

    2024年02月02日
    浏览(41)
  • OpenCV实战5 车牌号识别

    原文在这里,参考这个进行了改进 感觉学到了很多东西,便在这里作下笔记。 效果: 目录 一、知识点学习: 1. fstream 2. 形态学开操作与形态闭操作 2.1 第一个角度:消除较小的联通区域 vs 弥合较小的联通区域 2.2 第二个角度:消除背景噪音 vs 消除前景噪音 3、approPolyDp函数

    2024年02月01日
    浏览(58)
  • 5.9 自选车牌号小程序(project)

    任务描述 本关任务:编写一个能随机产生5个数字的车牌号的小程序。 相关知识 为了完成本关任务,你需要掌握: 1.随机产生一个整数 2.随机产生多个整数 随机产生一个整数(字符) randint(a,b) 可以产生[a,b]之间的一个整数 random.randint(0,10)

    2024年02月08日
    浏览(48)
  • 告别繁琐,ModelArts一键解决车牌号识别难题

    本文分享自华为云社区《基于ModelArts实现车辆车牌号的目标识别》,作者:屿山岛 。 车辆车牌是车辆的唯一身份标识,能够提供车辆的类型、颜色、归属地等信息,对于交通管理、安全监控、智能出行等领域具有重要的应用价值。随着计算机视觉技术的发展,车辆车牌的自

    2024年02月05日
    浏览(65)
  • opencv 车牌号的定位和识别+UI界面识别系统

    目录 一、实现和完整UI视频效果展示 主界面: 识别结果界面:(识别车牌颜色和车牌号) 查看历史记录界面: 二、原理介绍: 车牌检测-图像灰度化-Canny边缘检测-膨胀与腐蚀 边缘检测及预处理-膨胀+腐蚀组合-再一次膨胀-车牌识别 图像最终处理-字符分割及识别 完整演示视

    2024年02月11日
    浏览(58)
  • 深度学习实战项目(一)-基于cnn和opencv的车牌号识别

    网上大部分是关于tensorflow,使用pytorch的比较少,本文也在之前大佬写的代码的基础上,进行了数据集的完善,和代码的优化,效果可比之前的pytorch版本好一点。 数据集来自github开源的字符数据集: 数据集有:0-9,26个字母减去I和O,还有中文字,这里可以看看几张图片:

    2024年02月06日
    浏览(59)
  • 车辆信息快速查找API:轻松查询车牌号对应车辆的详细资料

      车辆信息的快速查找对于许多人来说是非常有用的。无论是想要购买一辆二手车,还是需要了解某辆车的详细信息,这个需求在现实生活中经常会遇到。那么,有没有一种快速方便的方法来实现这个功能呢?答案是有的,就是通过车辆信息快速查找API。 在这篇博文中,我们

    2024年03月24日
    浏览(51)
  • 前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

    前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input, 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下: 使用方法 HTML代码实现部分

    2024年02月10日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包