解决中文状态下扫描枪扫描错误
写作时间:2019-11-7 11:05:39
问题描述
今天项目上遇到反馈过来的问题:前端input输入去后台核对时,使用键盘输入核对成功,使用扫描枪输入核对失败。原因很明显:扫描枪扫出来的字符串肯定是错误的。
后续跟进反馈,中文状态下扫描枪出现这种问题。
大概猜测下,中文状态下扫描快递包裹,比如中通快递单号为:
Z T 103838237398 ZT103838237398 ZT103838237398
首先说明下扫描枪的原理:完全模拟键盘输入!也就是说,扫描出来的字符串也是逐个进行输出,也是有键盘的所有监听事件的。
再看上面的快递单号:中文状态下”ZT1“会输出什么?
以上也只是猜测,因为没有实际的扫码枪。但是问题还是需要解决的。
解决思路
解决思路1:不让输入中文!
<input type="text">
更改为
<input type="password">
可以完全解决输入中文的问题,但是不能显示明文。再加入一个text的input框,用于显示输入,password涌入接收输入。监听键盘按下或者抬起事件,每次时间后都把输入值从password传给text显示。具体代码如下:
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title>扫描枪中文状态输入汉字问题</title>
</head>
<body>
<input type="password" id="password" >
<input placeholder="请输入密码" id="text" type="text" disabled>
<br/>文本框<input type="text" >
<br/>密码框<input type="password">
<script>
var obj = {
</