基于jQuery的扫码枪监听。假如只是想完成监听猎取条码扫码信息,能够直接拿来运用,假如有更多的条码推断处置惩罚逻辑须要本身扩大。

一、功用需求

运用扫码枪扫描条码,在一个web页面监听猎取扫码枪的数据,并制止用户举行手动的输入操纵。

最先的主意异常简朴,由于扫码枪就是模仿键盘的输入,当他用usb接口插进去电脑的时刻,就变成了一个外接的输入装备,用js监听就能够了。然则怎样推断用户是不是为手动输入就须要做一些处置惩罚了。

二、重要题目

1.怎样推断是不是手动输入

2.怎样推断一个条码输入完成

三、解决方案

手动输入的解决办法就是:对照一个键从按下到抬起的时候距离,以及两次按键的时候距离。

由于扫码枪的输入速率异常的快,我测试的扫码枪输入的距离大概在15-60毫秒,然后手动输入的100-200之间,除非锐意的想打破限定举行疾速的输入。这个距离值能够掌握的很小,条件不要快过扫码抢的速率。

输入完成的推断:能够对输入框变化做一个监听,假如到达我们想要的位数,则提交服务器端举行处置惩罚;第二种是基于扫码枪,由于我运用的扫码枪能够设置扫码胜利末了附加一个回车。所以依据回车的keycode就能够推断为输入已完毕,然后猎取输入框的value,再举行后续的处置惩罚(提交服务器等)。

四、代码

时候距离的推断,依赖于jQuery的三个事宜:keydown,keypress,keyup;即键最先按下,已按下,弹起这三个状况,keydown,就是在按键刚刚被按下,但键值还没有写入文本框,keypress已按下而且值已输入到文本框,keyup就是弹起了。

须要做推断的就是按键从按下到抬起的时候距离,与两次keydown的时候距离。

重要的手动输入推断代码。

var barcode = {

listenerObj: null,

oneKeyTime : '', /* 一次按键时候距离 */

twoKeyTime : '', /* 两次按键时候距离 */

keyDownTime: '', /* 键按下的时候 */

barcodeLen : 8 , /* 条形码长度 */

spanTime : 70, /* 一次按键按下到开释的时候距离 */

on_key_down : function (){

var that = this;

this.listenerObj.keydown(function(e){

if(e.which !== 13 && !(that.in_range(e.which))){

$(that.listenerObj).val('');

return ;

}

var d = new Date();

var curTime = parseInt(d.getTime());

if(that.keyDownTime !== '' && that.keyDownTime !== NaN){

that.twoKeyTime = curTime - that.keyDownTime;

}

that.keyDownTime = curTime;

});

},

on_key_up : function(){

var that = this;

this.listenerObj.keyup(function(e){

var d = new Date();

var keyUpTime = d.getTime();

that.oneKeyTime = parseInt(keyUpTime) - parseInt(that.keyDownTime);

var isHand = that.checkHandInput();

if(isHand && that.in_range(e.which)){

layer.msg('制止手动输入');

$(that.listenerObj).val("");

}

})

},

on_key_press : function(){

var that = this;

this.listenerObj.keypress(function(e){

if(e.which == 13 && that.check_barcode()){

that.createListEl();

}

});

},

checkHandInput : function(){

if((this.oneKeyTime > this.spanTime) || this.twoKeyTime > this.spanTime){

return true;

}else{

return false;

}

},

}

将代码整理了一下,放到了Github。

我的js代码中的提醒用到了layer.js,所以假如运用根据index.html中的示例,引入相干的js:

$("#barCode").startListen({

barcodeLen : 10,

letter : true,

number : true,

show : function(code){

layer.msg(code);

}

});

这里可设置的参数:包括条码的长度,是不是包括英文字母,是不是包括数字。以及一个show回调要领,这个要领会在扫码胜利,条码正当的情况下被挪用,返回条码的值,以便做自定义的操纵,如上传服务器等。

代码中对页面的输入框做了stay focus,所以页面有其他的输入需求没法完成,能够撤除keepFocusInput的挪用。

代码很简朴,能够直接浏览,有值得革新的处所迎接指出。

php 监听条码枪输入,运用jQuery监听扫码枪输入并制止手动输入的完成要领相关推荐

  1. php 监听条码枪输入,使用jQuery监听扫码枪输入并禁止手动输入的实现方法

    @(知识点总结)[jquery|扫码抢] 基于jQuery的扫码枪监听.如果只是想实现监听获取条码扫码信息,可以直接拿来使用,如果有更多的条码判断处理逻辑需要自己扩展. 一.功能需求 使用扫码枪扫描条 ...

  2. php 监听条码枪输入,使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)...

    基于jQuery的扫码枪监听.如果只是想实现监听获取条码扫码信息,可以直接拿来使用,如果有更多的条码判断处理逻辑需要自己扩展. 一.功能需求 使用扫码枪扫描条码,在一个web页面监听获取扫码枪的数据, ...

  3. php 监听条码枪输入,jQuery监听扫码枪禁止手动输入的实现方法

    本文主要和大家 分享基于jQuery的扫码枪监听.如果只是想实现监听获取条码扫码信息,可以直接拿来使用,如果有更多的条码判断处理逻辑需要自己扩展哦,希望能帮助到大家. 一.功能需求 使用扫码枪扫描条码 ...

  4. php 监听条码枪输入,一起看看js获取扫码枪输入数据的方法

    1.扫码枪相当于键盘输入设备,输入一连串数字后加一个enter键.但在实际开发中需要区分是扫描枪输入还是键盘用户输入,区别在于扫码枪输入很快.let code = ''; let lastTime, ...

  5. js 条码枪扫描_使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解

    下面通过实例代码给大家介绍js扫码枪扫描条形码的实现方法,具体代码如下所示: var keycode = ""; var lastTime=null,nextTime; var l ...

  6. 扫码枪输入mysql_使用jQuery监听扫码枪输入并禁止手动输入的实现方法

    @(知识点总结)[jquery|扫码抢] 基于jQuery的扫码枪监听.如果只是想实现监听获取条码扫码信息,可以直接拿来使用,如果有更多的条码判断处理逻辑需要自己扩展. 一.功能需求 使用扫码枪扫描条 ...

  7. jquery 监听input输入停止,实现文本框自动跳转

    今天学到了一个新的东西,在此记录一下 我遇到了一个这样的需求:添加扫描一条数据,无鼠标键盘.工具:扫描枪,动作:扫描两个条码 扫描抢扫描时,扫描出来的数据是显示在当前焦点上,用input的文本框来保存 ...

  8. python读取usb扫码枪_使用jQuery监听扫码枪输入并禁止手动输入的实现方法

    基于jQuery的扫码枪监听.如果只是想实现监听获取条码扫码信息,可以直接拿来使用,如果有更多的条码判断处理逻辑需要自己扩展. 一.功能需求 使用扫码枪扫描条码,在一个web页面监听获取扫码枪的数据, ...

  9. php 监听 扫描枪,jquery监听扫码枪获得值

    客户一直说 扫码枪要一直获得焦点才能用,用户体验差 ,想做一个 在这个页面 有没有焦点都要获得到值,想了一下 只有用监听的方式了 // 写一个监听扫描枪 事件的方法 var code = ''; va ...

最新文章

  1. 解析|一文读懂AGV的关键技术——激光SLAM与视觉SLAM的区别
  2. 计算机组成原理ppt免费,计算机组成原理(白中英)第二章1.ppt
  3. java 正确使用 Volatile 变量
  4. java ee jsp_EE JSP:Servlet的反向外套
  5. Docker镜像(image)详解
  6. 马云贾跃亭唯一一次公开对话:一个曾经被嘲笑 一个现在被嘲笑
  7. 使用Github Actions构建、发布和部署NuGet软件包
  8. Jenkins部署Web项目到远程tomcat(通过jenkins插件)
  9. DIY01_NE555叮咚门铃
  10. Android修改源码实现root
  11. linux cpu占用分析,Linux下CPU占用率高分析方法
  12. 移动互联网创业团队开发管理经验
  13. php设计网站课程报告,在线课程网站设计与实现-开题报告
  14. 使用poi做excel导出时解决以文本格式存储的数字问题
  15. vi php pear,PEAR
  16. 分段函数sgnx的C语言程序,几个重要的分段函数
  17. 现代笑话二则:1.宿舍找钱;2.不漂亮的漂亮。
  18. 【Windows Esp32】基于 libjpeg-9e 编解码库的视频播放器
  19. JAVA文件搜索过程中如何得到各种文件内容(office文件,PDF,邮件,mht,思维导图等)
  20. 黏菌算法(Slime Mould Algorithm,SMA)

热门文章

  1. 1553B通讯软件设计BC客户端
  2. c语言中switch扑克牌花色,c语言中switch的用法
  3. 全网最全、最新MyBatis框架核心知识,这篇文章包你这辈子也忘不掉MyBatis!!
  4. UVA-12171 雕塑 题解答案代码 算法竞赛入门经典第二版
  5. SpringBoot+Vue智能停车场管理平台源码
  6. Retained Messages - MQTT Essentials: Part 8
  7. 计算机艺术论文,计算机艺术学位论文参考文献 计算机艺术论文参考文献数量是多少...
  8. 工具使用,Virbox用户工具(Linux),深思数盾,离线软锁加密,离线解绑,加壳软件,加壳工具,Virbox离线加密
  9. 多地发布养老金具体调整方案 这两类人可多涨点
  10. Telink “undefined reference to“ 问题解决方法