全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

使用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:

<input id="barCode" value="" type="text" placeholder="stay focus" style="" name="">
$("#barCode").startListen({
  barcodeLen : 10,
  letter : true,
  number : true,
  show : function(code){
    layer.msg(code);
  }
});

这里可配置的参数:包括条码的长度,是否包含英文字母,是否包含数字。以及一个show回调方法,这个方法会在扫码成功,条码合法的情况下被调用,返回条码的值,以便做自定义的操作,如上传服务器等。

代码中对页面的输入框做了stay focus,所以页面有其他的输入需求无法实现,可以除去keepFocusInput的调用。

以上所述是小编给大家介绍的使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# jquery  # 扫码枪  # 监听扫码枪  # jQuery事件的绑定、触发、及监听方法简单说明  # jQuery绑定事件监听bind和移除事件监听unbind用法实例详解  # js与jquery实时监听输入框值的oninput与onpropertychange方法  # 让input框实现类似百度的搜索提示(基于jquery事件监听)  # jquery监听div内容的变化具体实现思路  # 按下  # 两次  # 输入框  # 如何判断  # 小编  # 就可以  # 文本框  # 还没有  # 在此  # 其他的  # 会在  # 给大家  # 可以直接  # 做一个  # 自定义  # 这三个  # 中对  # 以对  # 解决办法  # 所述 


相关文章: c# 服务器GC和工作站GC的区别和设置  如何快速上传建站程序避免常见错误?  实例解析angularjs的filter过滤器  红河网站制作公司,红河事业单位身份证如何上传?  如何快速搭建FTP站点实现文件共享?  建站主机与服务器功能差异如何区分?  定制建站哪家更专业可靠?推荐榜单揭晓  如何在建站之星绑定自定义域名?  *服务器网站为何频现安全漏洞?  教学论文网站制作软件有哪些,写论文用什么软件 ?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  建站之星安装路径如何正确选择及配置?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何快速上传自定义模板至建站之星?  太平洋网站制作公司,网络用语太平洋是什么意思?  建站之星收费标准详解:套餐费用及年费价格表一览  建站之星安装后界面空白如何解决?  建站主机选购指南:核心配置与性价比推荐解析  如何彻底卸载建站之星软件?  如何选择适配移动端的WAP自助建站平台?  建站之星官网登录失败?如何快速解决?  如何将凡科建站内容保存为本地文件?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  制作表格网站有哪些,线上表格怎么弄?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何用y主机助手快速搭建网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  盘锦网站制作公司,盘锦大洼有多少5G网站?  如何撰写建站申请书?关键要点有哪些?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何快速搭建支持数据库操作的智能建站平台?  如何通过多用户协作模板快速搭建高效企业网站?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何在腾讯云服务器快速搭建个人网站?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  建站VPS配置与SEO优化指南:关键词排名提升策略  广州商城建站系统开发成本与周期如何控制?  制作营销网站公司,淘特是干什么用的?  建站之星后台密码如何安全设置与找回?  表情包在线制作网站免费,表情包怎么弄?  建站之星如何快速更换网站模板?  如何在Windows环境下新建FTP站点并设置权限?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  淘宝制作网站有哪些,淘宝网官网主页?  清除minerd进程的简单方法  如何在景安云服务器上绑定域名并配置虚拟主机?  电商网站制作价格怎么算,网上拍卖流程以及规则?  上海网站制作网站建设公司,建筑电工证网上查询系统入口? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。