jQuery监听扫码枪禁止手动输入的实现方法

本文主要和大家 分享基于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的调用。

相关推荐:

使用jQuery监听DOM元素大小变化

jquery监听div内容的变化具体实现思路_jquery

jQuery监控文本框事件并作相应处理的方法_jquery

以上就是jQuery监听扫码枪禁止手动输入的实现方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2789867.html

(0)
上一篇 2025年3月8日 18:48:39
下一篇 2025年3月5日 16:48:36

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • jQuery出错与解决方法小结

    大家有没有遇到过jquery is not define问题?今天在测试一个程序的时候,明显已经加载了jquery但总是提示jquery is not defined,经过多方测试终于发现了问题,这里简单总结一下,需要的朋友可以参考下,希望…

    编程技术 2025年3月8日
    200
  • jQuery中用on绑定事件时需要注意些什么

    随着jquery版本的更新,以前版本的bind(),live(),delegate()事件可以直接被on代替,本次笔记仅以点击事件为例,主要考察了on事件的用法:本文主要介绍了jquery中用on绑定事件时需注意的事项,具有很好的参考价值。…

    编程技术 2025年3月8日
    200
  • jQuery实现圆点图片轮播实例分享

    在页面的指定位置实现的图片自动的左右轮流切换展示效果,当点击图片左下的标签(或中间的小圆点)切换到对应的图片。接下来通过本文给大家分享用jquery实现圆点图片轮播效果实例代码,需要的朋友参考下,希望能帮助到大家。 图片轮播效果 : 在页面…

    2025年3月8日
    200
  • jQuery中table数据值的拷贝和拆分详解

    在开发的过程中,经常会遇到弹出框显示前一页table列表的情况,这时候会有好多方法来来解决,有的人可能会说重新查一遍数据显示,有的人会说直接用js将值拷贝过去,然后再修改,不过现在就介绍怎么用jquery将值拷贝到第二页并拆分拷贝的值。  …

    编程技术 2025年3月8日
    200
  • jQuery实现验证码功能实例分享

    很多编程语言都能实现验证码功能,本文主要介绍了jquery实现验证码功能的示例代码,具有很好的参考价值,下面跟着小编一起来看下吧,希望能帮助到大家。 效果图: 代码如下: nbsp;html>   Document  #code{ w…

    2025年3月8日
    200
  • jquery手势密码插件详解

    手势密码也是现在很流行的一种功能本文主要介绍了jquery手势密码插件的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧,希望能帮助到大家。 效果图: 代码如下: nbsp;html>   <!—->正确的密码是…

    2025年3月8日
    200
  • jquery datatable和bootsrap创建表格实例教程

    本文主要介绍了使用jquery-datatable和bootsrap创建表格的实例代码,需要的朋友可以参考下,希望能帮助大家掌握datatable和bootsrap创建表格的方法。  使用jquery-datatable插件 bootstr…

    2025年3月8日
    200
  • jquery PrintArea票据的套打功能实现方法

    套打就是指不打印表单上的表结构和固定的文言,只把会变化的数据打印出来,本文主要为大家带来一篇jquery printarea 实现票据的套打功能(代码)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮…

    2025年3月8日
    200
  • jquery编写日期选择器实例教程

    大家都知道如何用jquery实现日期选择器吗?本文主要介绍了jquery编写日期选择器的实现过程与方法,具有很好的参考价值。下面跟着小编一起来看下吧,希望大家学完本文能实现自己的一个日期选择器。 使用jquery做一个日期时间选择器,最好使…

    2025年3月8日 编程技术
    200
  • jquery事件与绑定事件详细说明

    jquery事件与绑定事件都是很重要的知识,本文主要介绍了jquery事件与绑定事件的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧,希望能帮助到大家。 1.首先,我们来看一下经常使用的添加事件的方式: function shao(…

    2025年3月8日
    200

发表回复

登录后才能评论