@(知识点总结)[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 监听所有锚点链接实现平滑移动

jquery 监听所有锚点链接实现平滑移动,地址栏上不会改变链接地址 //监听所有锚点链接实现平滑移动 $('a[href*=#],area[href*=#]').click(function() { ...

Android EditText的输入监听,输入字符的动态获取

http://itindex.net/detail/38974-android-edittext-%E7%9B%91%E5%90%AC 有时候我们可能会用到时时的监听EditText输入字符的时时监听 ...

jQuery监听事件经典例子

关键字:jQuery监听事件经典例子  js代码:  ============================================================  $(function( ...

实时监听input输入内容的N种方法

现在有一个需求,需要我们实时监听input输入框中的内容,从而带来更好的用户体验,而不是等我们全部输入完毕才告诉我们格式不对首先我们创建一个input输入框

一千行ABAP代码实现Windows传统游戏扫雷

*&---------------------------------------------------------------------* *& Report ZCHENH087 ...

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

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

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

  2. php 监听条码枪输入,运用jQuery监听扫码枪输入并制止手动输入的完成要领

    基于jQuery的扫码枪监听.假如只是想完成监听猎取条码扫码信息,能够直接拿来运用,假如有更多的条码推断处置惩罚逻辑须要本身扩大. 一.功用需求 运用扫码枪扫描条码,在一个web页面监听猎取扫码枪的数 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. curl请求模拟post发送json
  2. html5 将id的值用于top_web前端分享HTML5常见面试题集锦四
  3. java泛型解析(转)
  4. [转]MVC中如何使用RDLC报表
  5. Java 操作POI 之复制sheet页
  6. 3.5.2 冒泡排序类
  7. 关于比较器Comparator排序时间的问题
  8. sql developer Oracle 数据库 用户对象下表及表结构的导入导出
  9. 大学生们颤抖吧,中学生已经开始学Python了!
  10. java bridge 模式_学习:java设计模式—Bridge模式
  11. 小甲鱼python【easyGUI】学习笔记
  12. Day77 Java框架 SSH案例_ERP(十一)_CXF框架_红日物流BOS系统_ERP物流信息管理
  13. 计算机网页文档无法复制怎么办,电脑网页不能右键复制怎么办|电脑无法复制网页内容的解决方法...
  14. php predis连接超时,如何解决redis连接超时问题
  15. lesson - 7 课程笔记 vim
  16. c语言实验--九九乘法表,C语言程序设计实验四 参考答案.doc
  17. 2020 操作系统 实验二 进程通信
  18. 程序设计与算法(三)期末考试之013:编程填空:三生三世
  19. Server 2016/Windows 10使用域管理员账户操作提示权限不足的问题
  20. 一文读懂5G智慧教育:42个应用场景如何改变教育

热门文章

  1. uni.getLocation(Object)获取经纬度和当前中文地址
  2. 编程软件IAR安装使用及程序下载
  3. 聊一聊推荐系统中ExploitExplore算法
  4. 面向对象设计原则实践:之四.里氏代换原则
  5. php中文拼音模糊,两种php中文字符转拼音问题解决方法
  6. 高阶人工智能时代的畅想
  7. html5开发android应用
  8. 22考研|英语词汇该如何记忆?
  9. altium designer 快捷键
  10. java调用打印机没反应_java调用打印机问题