javascript扫码枪的判断输入

设计思路:

扫码枪本质上来讲是一种输入设备,和键盘没有任何区别,因此如何实现对扫码枪的判断是一个难点。

另外一个难点在于如何在不使用文本框监听的情况下实现对扫码枪的监听与输入。

关于以上两点,首先,可以通过判断输入时间间隔来判断究竟是扫码枪还是键盘,经过我的实测,扫码枪输入的时间间隔一般在8毫秒,偶尔会有16毫秒,而键盘输入一般都在80毫秒以上,因此我设定当输入间隔小于等于30毫秒时,判断为扫码枪输入;其次,可以通过对document的onKeyPress事件进行监听判断输入,至于为何要使用onKeyPress事件而不是onKeyDown或者onKeyUp进行监听,是因为只有通过onKeyPress事件监听按键才能准确的还原键盘码,这一点我在chrome已经实测过了。

<%
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
  <head>
    <script type="text/javascript" src="<%=basePath%>/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
    	window.onload = function(e) {
    		var codeString = "";
    		var lastTime;
    		document.onKeyPress = function(e) {
    			var code = e.which;
    			var nextTime = new Date().getTime();
    		
    			if(nextTime - lastTime <= 30) {
    				codeString += String.fromCharCode(code);
    			}
    			lastTime = nextTime;
    		};
    		
    		$(this).keypress(function(e) {
    			if(e.which == 13) {
    				alert(codeString);//do something
    				codeString = "";//回车输入后清空
			}
}); } </script> </head>


以上是我的第一种思路,这个思路有一个缺点,就是会丢失扫码枪扫描的第一个字符,因此我对第一种思路进行了改进:

<%
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
  <head>
    <script type="text/javascript" src="<%=basePath%>/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
    	window.onload = function(e) {
		var code = "";
    		var lastTime,nextTime;
    		var lastCode,nextCode;
    		document.onKeyPress = function(e) {
    			nextCode = e.which;
    			nextTime = new Date().getTime();
    		
    			if(lastCode == null && lastTime == null) {
    				
    			} if(lastCode != null && lastTime != null && nextTime - lastTime <= 30) {
    				code += String.fromCharCode(code);
    			} else if(lastCode != null && lastTime != null && nextTime - lastTime > 1000) {
    				code = "";//超时清空
    			}
    			lastCode = nextCode;
    			lastTime = nextTime;
    		};
    		
    		$(this).keypress(function(e) {
    			if(e.which == 13) {
    				alert(code);
    				code = "";//回车输入后清空
    			}
    		});
    	}
    </script>
  </head>


  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 使用JavaScript编写扫码输入数据累加的代码非常简单。我们可以通过监听输入事件来获取扫码输入数据,并在每次输入时将数据累加到一起。 首先,需要在HTML文件中创建一个文本框和一个显示累加结果的元素,如下所示: ```html <input type="text" id="input" /> <p id="result"></p> ``` 然后,在JavaScript代码中获取输入框和结果显示元素的引用,并添加一个输入事件监听器: ```javascript const input = document.getElementById('input'); const result = document.getElementById('result'); let sum = 0; input.addEventListener('input', function(event) { const value = parseInt(event.target.value); if (!isNaN(value)) { sum += value; result.textContent = '累加结果:' + sum; } }); ``` 这段代码首先定义了一个变量`sum`来保存累加结果的值,并设置初始值为0。然后,使用`addEventListener`方法添加了一个输入事件监听器,在每次输入事件发生时调用匿名函数。 在匿名函数中,首先通过`event.target.value`获取输入的值,并使用`parseInt`将其转换为整数类型。然后,检查转换后的值是否为有效的数字,若是,将其累加到`sum`中,并更新结果显示元素的文本内容。 最后,将JavaScript代码放置在HTML文件的`<script></script>`标签中,或者将其保存为一个单独的`.js`文件并通过`<script src="script.js"></script>`的方式引入。 这样,当用户使用扫码输入数据时,累加结果会实时显示在页面上。 ### 回答2: 在JavaScript中,可以通过监听扫码输入事件来获取扫码输入的数据,并进行累加操作。下面是一个简单的示例代码: ```javascript // 假设页面上有一个用于显示累加结果的文本框 var resultInput = document.getElementById('result'); // 初始化累加结果为0 var sum = 0; // 监听扫码输入事件 document.addEventListener('keydown', function(event) { // 获取键盘按下的字符 var char = String.fromCharCode(event.keyCode); // 判断是否为数字 if (/^\d$/.test(char)) { // 将输入的数字累加到结果上 sum += parseInt(char); // 更新文本框的值 resultInput.value = sum; } }); ``` 在上述代码中,我们通过addEventListener方法监听了keydown事件,当有键盘按键被按下时触发该事件。然后判断按下的键是否为数字,并将数字累加到sum变量中。最后更新显示累加结果的文本框的值。 这样,当你使用扫码输入数字时,脚本会将输入的数字累加起来,并实时更新在页面上。 ### 回答3: 使用JavaScript编写代码来实现扫码输入数据的累加非常简单。下面是一个示例代码: ```javascript // 初始化累加器 let sum = 0; // 监听扫码输入事件 document.addEventListener('keydown', function(event) { // 检查输入的键值是否为数字键 if (event.key >= '0' && event.key <= '9') { // 将输入的数字转换为整数,并累加到总和上 sum += parseInt(event.key); } }); // 输出累加结果 console.log('当前累加结果为:', sum); ``` 上述代码通过使用`document`对象的`addEventListener`方法来监听键盘按下事件,然后检查输入的键值是否为数字键。如果是数字键,则将输入的数字转换为整数,并累加到`sum`变量上。最后,通过`console.log`方法输出累加结果。 你可以将上述代码放在HTML文件中的`<script>`标签内,并在浏览器中运行该文件。然后,当你使用扫码扫描条形码时,输入的数字将被累加到`sum`变量上,并在控制台上显示累加结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值