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

标签 javascript html jquery jquery-events

我有一个 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 个数字。当输入第一个数字时,您可以设置超时,例如300 毫秒。如果所需的值长度未达到 300ms,清场即可。

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

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

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

关于javascript - 防止用户在文本字段中键入和粘贴,只允许从 USB 条码阅读器读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20466073/

相关文章:

javascript - 在选择中对齐文本中心

javascript - 使 jQuery UI 可拖动到窗口外

javascript - 在光标位置插入文本在空行上失败

javascript - 重写 Backbone 的 URL 函数以从本地存储中获取数据

javascript - 将 CSS 与 Express 结合使用

在redirect_to之后没有调用javascript

php - jquery 或 javascript 中的字符串替换

html - 如何在没有javascript的情况下将PDF嵌入网页

javascript - 如果 DIV 包含选中的复选框,则设置显示为 block

jquery - 如何使导航菜单适合其容器? [横向]