问题起因

最近项目中遇到了一个问题,需求是希望可以禁止键盘输入,只允许使用扫码器进行输入。这个问题如果是cs端软件实现起来相对容易写,可以根据接入的端口进行判断,但如果是usb就无能为力了。更何况我们是web程序呢。但是有问题就有解决的办法。

分析

扫码器和键盘输入有什么区别呢?从原理上讲是没有区别的,同样是模拟键盘的输入。但是,扫码器的输入速度比人的输入速度要快的多。于是就有了下面的代码

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>键盘输入测试</title><script>var keydownFirstTime = 0; function keyup(obj) {    var date = new Date(); var nowTime = date.getTime();if (obj.value.length<2) {keydownFirstTime = nowTime;          }if(nowTime-keydownFirstTime >500){obj.value='';}}</script></head><body>
<input onkeyup="keyup(this)"></body>
</html>

为什么是用onkeyup而不是用onkeydown检测,是因为只有键盘松开时输入内容才会进入input,如果用onkeydown每次都会有一个字符在里面。
当然也有其他办法解决这种问题。但我们希望用最简单快捷的方式去解决。于是选择了用onkeyup事件。
还有一个问题,如果用时是中文状态,输入一串内容最后回车也会。一次性输入很多的内容。这就需要进行其他处理,比如过滤中文字符。比如onkeydown和onkeyup组合处理。方式有很多,这里只记录一个简单的例子,提供一种思路。

如何禁止手工输入但允许扫码器输入相关推荐

  1. 获取USB扫码器输入

    USB扫码器相当于键盘输入 重写onKeyDown方法监听输入 int count = 1; StringBuffer sb = new StringBuffer(); TextView tv;pub ...

  2. Android 连接蓝牙扫码器 无输入框

    Android 的APP 需要集成一个蓝牙扫码器, 特别的是,需要扫码的地方是没有输入框的(EditText),不能通过直觉上理解的通过对EditText输入事件进行监听处理,取得扫码结果.并且设备也 ...

  3. 前端 获取 扫码枪等扫码设备输入内容:2种方式

    方式一: 只有有输入焦点,扫码枪就可以把结果打印出来.其实就是相当于我们的键盘输入扫码枪会在打印完成后执行回车键.这样当页面不需要输入框没有焦点可以输入时,可以通过监听键盘事件来获取到扫码枪输入的内容 ...

  4. delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收

    delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收 今天,群里有几位同学讨论这个问题,汇总了一下,分享出来,供同学们学习研究. 一.直接上代码示例 1.屏蔽应 ...

  5. vue 扫码枪 扫码墩 扫码器 中文输入影响 大小写影响 解决方案 js web端扫码枪对接 前端扫码枪 html扫码枪 vue扫码枪

    # vue3 扫马枪/扫马墩/扫码器 中文输入影响 大小写影响 解决方式 ## ps 你们觉得好用的话,能不能给我点个赞啊

  6. 支付宝红包活动,怎么领呢?怎么输入数字和扫码呢?

    支付宝红包活动,怎么领呢?怎么输入数字和扫码呢? 1.打开支付宝 2.在支付宝首页搜索上面输入数字:594097031 3.或者直接用支付宝扫码二维码也可 4.活动每天都可以领金额随机不等 二维码: ...

  7. 商品扫码器驱动如何设置 商品扫码器驱动设置步骤

    商品扫码器驱动如何设置?商品扫码器驱动设置步骤,商品扫码器一般分为三种接口,分别为USB接口.串口和键盘口.只需要选择适合使用的接口,也就是说电脑或其他设备上有什么接口,就选择什么接口就对了,就大多数 ...

  8. 扫码器:壹码通(EMT 6621)二维码带多个回车换行处理

    摘要:二维码运用越来越广泛了,目前在医院中一个二维码可以串联多个系统,二维码的内容也可以设置一些特殊字符去达成系统便捷性.本次遇到为二维码中开头内置了回车和空格,在程序判断为回车(KEY_ENTER) ...

  9. C#光功率计_扫码器导入excel

    公司要求扫码器读入编码,然后光功率计取出数值,等完成后把两个数据导入excel 用了将近一个月 时间  以前在学校一直想学一款上位机的,但是C#,LABVIEW,QT,VC,deliphi 选择太多了 ...

最新文章

  1. PHP复制和移动目录
  2. 幽暗统领 树的重心 牛客白月赛44
  3. AJAX——注册新用户的重名提示
  4. kafka自动提交offset失败:Auto offset commit failed
  5. KVM安装、镜像创建(一)
  6. p怎么调用python的实例属性_Python中类的声明,使用,属性,实例属性,计算属性及继承,重写...
  7. 数据结构之图定义及相关概念
  8. ajax 入参为list_ajax向后台传递list参数
  9. 1 Oracle数据库环境搭建
  10. Luogu 1606 [USACO07FEB]白银莲花池Lilypad Pond
  11. matlab 2014a 安装教程(内附破解文件)
  12. num find matlab,matlab中find函数的使用说明
  13. 分布式基础-谁来当老大(二)
  14. i = i++, i = ++i, j = i++, j = ++i 的区别
  15. 简单聊聊PostgreSQL buffer与OS cache
  16. 被苹果“分手”后,英特尔华丽逆袭:新款酷睿 i9 碾压 M1 Max?
  17. 中文技术文档写作规范【转载】
  18. php job框架,GitHub - zanphp/job-server
  19. 如何合成gif动态图?教你一招快速合成动态gif图
  20. 图解 Docker 架构

热门文章

  1. 御用导航提示提醒_又现神操作!广西两车主开车走楼梯,车主:导航让我走的!...
  2. linux下ubuntu调分辨率,ubuntu修改屏幕分辨率
  3. Python分析万条数据,告诉你奔驰宝马奥迪谁更垃圾!快来学Python!!
  4. 分屏总屏计算机电缆,DJYPVP分屏+总屏蔽计算机电缆
  5. python趣味编程-数字益智游戏
  6. SPSS + AMOS 结构方程模型(SEM)
  7. nacos注册成windows服务,启动失败,注册表也改过了
  8. 酒吧会员卡小程序制作设计,酒吧小程序开发制作定制功能和解决方案_document.getElementById(“demo“).innerHTML
  9. 绿色数据中心案例介绍:阿里巴巴、华为、电信、移动……
  10. 微软文本转语音「免费网页版」