Javascript 防止用户在文本字段中键入和粘贴,并仅允许从USB条形码读取器读取

Javascript 防止用户在文本字段中键入和粘贴,并仅允许从USB条形码读取器读取,javascript,html,javascript-events,jquery,Javascript,Html,Javascript Events,Jquery,我有一个HTML输入字段,如 <input type="text" name="TextBox1" id="TextBox1"> 但它也会阻止所有来源的输入,包括USB条形码扫描仪 有什么建议吗?可能吗?我不确定条形码扫描仪会引发什么事件,但您是否尝试过以下方法: <input type="text" name="TextBox1" id="TextBox1" onkeydown="return false;"> 当使用条形码扫描仪时,您可以预期该字段将在大约几百毫秒

我有一个HTML输入字段,如

<input type="text" name="TextBox1" id="TextBox1">
但它也会阻止所有来源的输入,包括USB条形码扫描仪


有什么建议吗?可能吗?

我不确定条形码扫描仪会引发什么事件,但您是否尝试过以下方法:

<input type="text" name="TextBox1" id="TextBox1" onkeydown="return false;">

当使用条形码扫描仪时,您可以预期该字段将在大约几百毫秒内填满,而人类至少需要一到两秒钟来键入10位数字。输入第一个数字时,您可以设置超时,例如300ms。如果所需的值长度未用HIN轴化 300米,清理场地

这并不能防止有人以高速欺诈性地输入随机数字,但毕竟,永远不要相信用户数据

编辑:手边没有代码段,但伪代码可能是

on keydown
    if(value.length < 2)
        timeout = now+300
    elseif(now > timeout and value-legth < required legth)
        value=''
按下键时

如果(值.长度<2)
超时=现在+300
elseif(现在>超时和值长度<所需长度)
值=“”

所以我猜条形码扫描仪模拟按键。如果您查看事件的键码,您会得到什么值?为什么不将用户输入和条形码输入相结合?如果您发现条形码,例如添加产品。若并没有,你们就在你们的产品上进行搜索。PS:我希望你们明白,你们的js代码在输入源方面并没有任何保证?Zsolt Szilagy提到的一些迹象,如输入延迟低(不确定是否不立即粘贴整个代码),可以用来区分用户输入和扫描仪,但这并不意味着用户无法绕过客户端的限制。事实上,任何人都可以,很容易,所以不要用它作为验证。
on keydown
    if(value.length < 2)
        timeout = now+300
    elseif(now > timeout and value-legth < required legth)
        value=''