扫码枪是模拟的键盘输入,所以用键盘事件window.document.onkeypress = function(e){ }.

在vue项目中,可以在created/mounted中做

代码如下

<template><input  v-model="codeValue" placeholder="请输入条形码"/>
</template><script>
export default {data() {return {codeValue: '',code: '',lastTime: '',nextTime: '',lastCode: '',nextCode: '',dtmainId: ''}},created() {window.document.onkeypress = (e) => {if (window.event) { // IEthis.nextCode = e.keyCode} else if (e.which) { // Netscape/Firefox/Operathis.nextCode = e.which}if (e.which === 13) { // 键盘回车事件if (this.code.length < 3) return // 扫码枪的速度很快,手动输入的时间不会让code的长度大于2,所以这里不会对扫码枪有效console.log('扫码结束。')console.log('条形码:', this.code)this.parseQRCode(this.code) // 获取到扫码枪输入的内容,做别的操作this.lastCode = ''this.lastTime = ''return}this.nextTime = new Date().getTime()if (!this.lastTime && !this.lastCode) {this.code = '' // 清空上次的条形码this.code += e.keyconsole.log('扫码开始---', this.code)}if (this.lastCode && this.lastTime && this.nextTime - this.lastTime > 500) { // 当扫码前有keypress事件时,防止首字缺失this.code = e.keyconsole.log('防止首字缺失。。。', this.code)} else if (this.lastCode && this.lastTime) {this.code += e.keyconsole.log('扫码中。。。', this.code)}this.lastCode = this.nextCodethis.lastTime = this.nextTime}},methods: {parseQRCode(code) {if (code.length === 13) {// 处理自己的逻辑this.$emit('barCode', code) //通知父组件} else if (code.length === 23) {console.log('B类条码:' + code)} else if (code.length === 0) {console.log('请输入条码!')} else {alert('条码不合法:' + code)}this.codeValue = code// 发送网络请求}}
}
</script>

[绍棠] vue 扫码枪读取条形码数据相关推荐

  1. vue下实现扫描枪读取条形码数据

    扫描枪模拟的是键盘输入事件,所以我们可以监听键盘按下事件(window.document.onkeypress)来实现相关需求. 可以在created/mounted中添加事件. 具体方法: // 监 ...

  2. 041:vue+openlayers读取WKT数据,输出GML、Polyline、GeoJSON(代码示例)

    第041个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中读取WKT的geometry数据,并输出GML,Polyline,GeoJSON的Geometry. 直接复制下 ...

  3. 030:vue+openlayers读取WKB数据(示例代码)

    第030个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中读取WKB的数据,并显示图形. 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果: ...

  4. [绍棠] Vue中this.$nextTick()实现原理及使用场景学习总结

    this.$nextTick()原理: Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新. Vue 在修改数据后,视图不会立刻更新,而是等同一事件循环中 ...

  5. [绍棠] Vue六种传值方式

    前言: 六种传值方式为: 属性传值 $refs $parent 通知传值(广播传值) 本地传值 路由传值 在介绍组件传值之前先明确三种组件关系:父子组件.兄弟组件.无关系组件 上图关系基于:A.B组件 ...

  6. [绍棠] Vue解决V-HTML指令潜在的XSS攻击(‘v-html‘ directive can lead to XSS attack.)

    什么是 XSS 攻击? XSS是跨站脚本攻击(Cross-Site Scripting)的简称. XSS是一种注入脚本式攻击,攻击者利用如提交表单.发布评论等方式将事先准备好的恶意脚本注入到那些良性可 ...

  7. [绍棠] vue跳转的两种方法

    1 标签跳转 <router-link to="/recommend"><button class="button">点击跳转</ ...

  8. vue 读取ajax数据,详解vue 中使用 AJAX获取数据的方法

    在VUE开发时,数据可以使用jquery和vue-resource来获取数据.在获取数据时,一定需要给一个数据初始值. 看下例: new Vue({ el:'#app', data:{data:&qu ...

  9. pHp封装成vue,vue.js生成条形码的方法

    本文主要和大家分享vue.js生成条形码的方法,主要以代码的形式和大家分享,希望能帮助到大家. 1.下载插件npm install @xkeshi/vue-barcode //下载条形码插件 2.在m ...

最新文章

  1. 数据库开发基本操作-安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法...
  2. 标准差 标准误 偏度系数和峰度系数的作用
  3. python获取路径下所有图片:
  4. CentOS 7.X 升级 Python 3.8.X
  5. dsu on tree 题集 + ac代码
  6. 【第七次JAVA课,java语法基础】课件总结
  7. win7安装composer
  8. Kubernentes
  9. 高并发分布式系统中生成全局唯一Id汇总
  10. MVC神韵---你想在哪解脱!(七)
  11. 设置谷歌浏览器翻译插件
  12. 国外苹果id_爆料者称苹果仍在继续研发iPhone屏下Touch ID
  13. 黑马程序员:Java学习路线图上线了
  14. 全球及中国坚果产业发展现状及趋势分析,市场发展潜力巨大「图」
  15. Scheme语言 入门语法
  16. 安卓毕业设计源码基于Uniapp+SSM实现的校园心理健康APP
  17. C/C++项目:魂斗罗游戏
  18. 模仿360安全卫士项目笔记3
  19. H3C无线AC+AP配置4——Wifi名称相同,但不同楼不同vlan
  20. seaweedfs上传文件为什么要先申请文件号?(/dir/assign)(两种工作模式:Volume模式与Filer模式)(seaweed上传文件)

热门文章

  1. 【独立站运营】分享用即上“瘾”的16个购物车召回邮件模板
  2. python word2vector训练wiki中文文本语料
  3. 利用Gitee搭建私人仓库-https篇
  4. idea中设置注释颜色
  5. 刷题记录——DNA序列
  6. 认知神经的AI之光,将在北京闪耀
  7. 全国计算机应用考试试卷,全国自考计算机应用基础历年试题含答案
  8. 诛仙服务器列表文件,诛仙2 服务器列表
  9. 百度网盘和视频网站都在用的P2P技术是什么?
  10. 全面解读丨山石网科重磅发布的容器安全防护系统“云铠”,究竟是个啥?