首页 > 其他分享 >监听读卡器刷卡事件

监听读卡器刷卡事件

时间:2023-04-12 15:22:56浏览次数:43  
标签:刷卡 focus input 读卡器 监听 页面

web浏览器使用ic卡或磁卡读卡器自动弹出页面,参考:web浏览器使用ic卡或磁卡读卡器自动弹出页面 - HelpYourself! - 博客园 (cnblogs.com)

在页面内单独设置一个input框

<el-input ref="myInput" v-model="myInputModel" id="myInput" style="position:fixed;top:-100px;"></el-input>

页面渲染之后,监听:

mounted() {
    this.inputTimer = setInterval(() => {
      // 如果当前页面没有聚焦的input,则让隐藏的input聚焦
      if (!$('input:focus').length) {
        this.$refs.myInput.focus();
      }
    }, 500)

    this.$nextTick(() => {
      this.$refs.myInput.focus();

      document.getElementById('myInput').onblur = () => {
        console.log("监听失焦事件-----");
      }


      document.getElementById('myInput').addEventListener('focus', () => {
        console.log("监听聚焦事件-----")
      });
    });
    let _this = this;
    window.addEventListener('keydown', e => listenReader(e, _this))

  },

监听读卡器刷卡的操作:

listenReader(e) {
      let _this = this;
      document.onkeypress = (e) => zx(e);
      _this.readerSwip = false;
        function zx(e) {
          _this.nextCode = e.keyCode;// 当前的键码
          _this.nextTime = new Date().getTime();// 当前的毫秒数
          // 大写字母键值范围  A~Z(a~z): 65~90
          // 有时会出现 a~z: 97~122
          // 数字键值范围  0~9: 48~57

          // 数字键盘上的数字键范围 0~9: 96~105
          // if (_this.nextCode >= 48 && _this.nextCode <= 57) {// 只关注数字键
          let res = Number(_this.nextTime) - Number(_this.lastTime);
            if (_this.lastCode != null && _this.lastTime != null && res <= 20) {// 相差30以内说明是机器刷卡
              // console.log('机器刷卡--aa--', res)
              _this.handleReaderAction(e);
            } else {// 手动在输入
              // console.log("手动输入----aa--", res)
            }
              // 当前的键盘码和时间作为下一次的上一次
              _this.lastCode = _this.nextCode;
              _this.lastTime = _this.nextTime;
          
        }
    },
handleReaderAction函数:
this.readerSwip = true ---- 是读卡器刷卡,不是手动输入;
readerValue :读卡器读出来的值
handleReaderAction(e) {
      if(this.time !== null){
        clearTimeout(this.time);
      }
      this.time = setTimeout(() => {
        let value = e.target?.value || '';
        this.readerValue = e?.target?.value || '';
        this.readerSwip = true;
        // 清空上次读卡的值
        e.target.value = ''

        // 处理刷卡逻辑
        this.handleReadCard();
      },50)
    },
handleReadCard: 处理刷卡逻辑,与自己业务相关代码
 

标签:刷卡,focus,input,读卡器,监听,页面
From: https://www.cnblogs.com/hahahakc/p/17309914.html

相关文章

  • vue属性之监听属性(watch)
    目录简介语法示例简介当一个变量的值发生变化时,执行对应的函数语法#在属性中添加watch属性,并以需要监听变量的名字进行定义函数data:{show:'abc'}watch:{show(){我是函数内容}}示例<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......
  • android监听耳机按键
    app在前台的监听方式:@OverridebooleanonKeyDown(intkeyCode,KeyEventevent){if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){returnsuper.onKeyDown(keyCode,event);}switch(keyCode){caseKeyE......
  • oracle启动监听后提示no services的解决办法
    0x00问题经常安装完后,dbca建库,netca增加监听后,命令行提示:Thelistenersupportsnoservices0x01解决方法altersystemsetlocal_listener="(address=(PROTOCOL=TCP)(HOST=你的IP地址)(PORT=1521))";altersystemregister;0x02查看监听lsnrctlstatus0x0......
  • 成品直播源码,Android实现监听Settings值变化的功能
    成品直播源码,Android实现监听Settings值变化的功能先创建一个内部类继承自ContentObserver   classSettingsContentObserverextendsContentObserver{    publicSettingsContentObserver(){      super(newHandler());    }    ......
  • 监听 input type=file 文件上传取消事件
    在做项目的时候,需要根据是否上传图片,(前提是已经上传文件,再次上传取消时,监听取消事件)进而判断页面变化。通过查阅相关资料,发现change事件并不能监听取消,于是从另外一种角度:判断上传的文件是否有值,进而监听取消事件。代码如下:<inputtype="file"name="file"id="fileToUpload"a......
  • Oracle 11g R2创建数据库时,提示:要求在当前Oracle主目录中配置监听程序 必须运行Netca
    问题描述:    Oracle11gR2创建新的数据库时出现:使用DatabaseControl配置数据库时,要求在当前Oracle主目录中配置监听程序必须运行Netca以配置监听程序,然后才能继续。或者,可以选择继续,但不使用DatabaseControl配置。==================================================......
  • 简单分享-项目中监听文件夹及文件的方法
    首先实现对应接口importorg.apache.commons.io.monitor.FileAlterationListenerAdaptor;importjava.io.File;publicclassFilterListenerextendsFileAlterationListenerAdaptor{@OverridepublicvoidonDirectoryCreate(Filedirectory){System.ou......
  • JS事件监听
    事件绑定方式一:通过HTML标签中的事件属性进行绑定<inputtype="button"onclick="on()"value="按钮1"><script>functionon(){alert('我被点击了!')};</script>方式二:通过DOM元素属性绑定<inputtype="button"id="b......
  • [ Spring事件发布与监听 ]
    Spring事件监听与发布主要有以下部分:事件(被监听的玩意),事件发布(把这个事件发布出去),事件监听(用来监听事件,并做行动)项目中,因为事件类型不同,可以先定义事件的接口:Ievent:publicinterfaceIEvent{}对于具体的事件,可以实现IEvent接口:(ep:后端需要判断一个对象中是否......
  • flutter获取网络状态和网络状态监听
    flutter获取网络状态和网络状态监听问题背景Android开发中,获取网络状态以及监听网络状态变化是很常见的场景,我们现在看看flutter中是如何获取网络状态以及监听网络状态变化的。问题分析flutter开发过程中,可以通过使用Connectivity插件来获取当前设备的联网状态,以及监听当前设备......