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

Prevent user from typing and pasting in text field and allow reading from a USB Barcode reader only

本文关键字:读取 条形码 USB 文本 用户 字段      更新时间:2024-05-20

我有一个HTML输入字段,如:

<input type="text" name="TextBox1" id="TextBox1">

我想防止使用键盘打字和使用鼠标粘贴,同时只允许输入来自USB条形码读取器的输入。我尝试使用:

$( document ).ready(function() {        
    $('#TextBox1').keydown(function(e) { 
        if ($(e.target).is('input, textarea')) {
           e.preventDefault();
        }                  
    });    
});

但它将阻止来自所有来源的输入,包括USB条形码扫描仪。

有什么建议吗?有可能吗?

使用条形码扫描仪时,您可以预期字段会填充数百毫秒,而人类至少需要一两秒钟才能键入10位数字。当输入第一个数字时,您可以设置例如300ms的超时。如果要求的值长度没有与hin匹配300毫秒,清理场地。

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

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

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

我不确定条形码扫描仪引发了什么事件,但你尝试过这个吗:

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