js 扫码枪的输入
关于js 获取扫码枪的输入获取方式,之前在网上搜了好多,都是大同小异的,都是说扫码枪输入的时间间隔不会超过30毫秒。但事实上我拿了几台电脑测试的结果是,有的时间间隔甚至超过了100毫秒,所以用时间间隔去判断是人工输入还是扫码枪输入,感觉还是不怎么理想,所以我换了一种逻辑去实现获取扫码枪的输入,代码如下:
scanCode() {
let code = ''
let lastTime, nextTime
let lastCode, nextCode
let that = this
window.document.onkeypress = function(e) {
if (window.event) { // IE
nextCode = e.keyCode
} else if (e.which) { // Netscape/Firefox/Opera
nextCode = e.which
}
if (e.which === 13) {
if (code.length < 3) return // 手动输入的时间不会让code的长度大于2,所以这里只会对扫码枪有
console.log(code)
console.log('扫码结束')
// that.distinguishCode(code) // 获取到扫码枪输入的内容,做别的操作
code = ''
lastCode = ''
lastTime = ''
return
}
nextTime = new Date().getTime()
if (!lastTime && !lastCode) {
console.log('扫码开始。。。')
code += e.key
}
if (lastCode && lastTime && nextTime - lastTime > 500) { // 当扫码前有keypress事件时,防止首字缺失
console.log('防止首字缺失。。。')
code = e.key
} else if (lastCode && lastTime) {
console.log('扫码中。。。')
code += e.key
}
lastCode = nextCode
lastTime = nextTime
}
}
js 扫码枪的输入的更多相关文章
- js实现可输入的下拉框
<HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=gb2312'> ...
- JS控制只能输入数字并且最多允许小数点两位
直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- JS 控制只能输入数字并且最多允许两位小数点
<html lang="en"> <head> <meta charset="UTF-8"> <title>JS ...
- js只允许输入数字和两位小数
一.js只允许输入数字和两位小数 //只允许输入数字和两位小数 function clearNoNum(obj) { obj.value = obj.value.replace(/[^\d.]/g, ...
- Node.js IO处理输入和回显,以及当今web应用程序的发展史
1.关于Node.js IO处理输入和回显 在Windows终端或者CD中输入 echo 'I must learn about Node.js' 结果将刚刚输入的 echo 'I mus ...
- 当页面提交时,执行相关JS函数检查输入是否合法
当页面提交时,执行相关JS函数检查输入是否合法 关键代码 <form action="tj.php" method="post" onSubmit=&qu ...
- JS验证只能输入数字,数字和字母等的正则表达式
JS判断只能是数字和小数点 0.不能输入中文1)<input onpaste="return false;" type="text" name=" ...
- js判断只能输入数字和只能输入
JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'' ...
- JS限制input输入的为数字并且有小数的时候最多保留两位小数
JS限制input用户输入的为数字并且有小数的时候最多保留两位小数,代码如下: html部分: <input type="number" onkeypress="r ...
随机推荐
- Two progressions CodeForces - 125D (暴力)
大意: 给定序列, 求划分为两个非空等差序列. 暴搜, 加个记忆化剪枝. #include <iostream> #include <sstream> #include < ...
- CF1090H Linearization
传送门 先考虑什么样的串才符合条件.\(s_i=P(x\&i)\oplus b\),其实这里的\(b\)只能使得整体是否取反,所以可以先不管.然后考虑\(x\)的每个二进制位的对\(s_0\) ...
- 运维dig语法
dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常 语法 1 dig(选项)(参数) 选项 1 @<服务器地址>:指定进行域名解析的域名服务器: 2 -b<ip地址&g ...
- react-native底部导航栏实现
react-native-tab-navigator实现: bottom.js代码如下: import React, {Component} from 'react'; import {StyleSh ...
- 013-zabbix trapper方式监控
zabbix获取数据时有时会出现超时,如果一些数据需要执行比较长的时间才能获取的话,那么zabbix会出现异常,考虑到这种情况,zabbix增加了Trapper功能,客户端自己提交数据给zabbix. ...
- P5200 [USACO19JAN]Sleepy Cow Sorting 牛客假日团队赛6 D 迷路的牛 (贪心)
链接:https://ac.nowcoder.com/acm/contest/993/E 来源:牛客网 对牛排序 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...
- 牛客练习赛26B 烟花 (概率DP)
链接:https://ac.nowcoder.com/acm/contest/180/B 来源:牛客网 烟花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5 ...
- UVa 10047 自行车 状态记录广搜
每个格子(x,y,drection,color) #include<iostream> #include<cstdio> #include<cstring> #in ...
- qtwebkit 启动时间慢
qtwebkit 启动时间慢 qtwebkit 启动时间慢 qtwebkit 启动时间慢
- 安装php多进程模块pcntl
在使用函数pcntl_fork()时报错 Fatal error: Uncaught Error: Call to undefined function pcntl_fork()....,原因是没有 ...