PDF417条形码扫描的线馈电量导致Chrome打开下载选项卡



我需要允许用户扫描其驱动程序许可证,并从中获取信息,用 n和 r代替CR和LF字符。当Chrome看到LF打开下载选项卡时,问题出在问题。我正在尝试使用jQuery查看和处理这些控制字符,到目前为止无济于事。有人有主意吗??我尝试了e.preventdefault();在文本框的键盘事件中,该信息正在扫描到中,但这不起作用。

当将PDF417扫描到文本框中时,问题出现了...您必须防止文本框允许允许CTRL代码使用...使用JavaScript和JQuery,这就是我做这项工作的做到了...我知道人们一直在尝试找到使这一发生的代码...因此,这里是:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<link rel="alternate stylesheet" href="jquery-ui-1.12.0/jquery-ui.min.css">
<script src="jquery-3.1.0.min.js"></script>
<script src="jquery-ui-1.12.0/jquery-ui.min.js"></script>
<script>
$(document).ready(function(e) {
 $("textarea").focus();
 var DLElements = [];;
    $("textarea").keydown(function(e) {
        // if <LF><CR> is detected, break the line
        if(e.ctrlKey && e.which == 17) {
        DLElements.push( $("#textarea").val() );
        $("#textarea").val( "" );
        e.preventDefault(); 
        }
        // Listen for <CTRL> J
        if(e.ctrlKey && e.which == 74) {
        e.preventDefault(); 
        }
        // Listen for <CTRL> M Mute
        if(e.ctrlKey && e.which == 77) {
        e.preventDefault(); 
        }
    });
        $("#parseMe").click(function(e) {
            //alert("Clicked");
            $.each(DLElements, function(key, value) {
                $("#textarea2").append("||" + value + "n");
            });
        });
});
</script>
</head>
<body>
<label for="textarea">Raw data</label>
<textarea name="textarea" id="textarea"></textarea>
<textarea name="textarea2" id="textarea2"></textarea>
<button id="parseMe">Parse Data</button>
</body>
</html>

只需保存此代码并将其打开在浏览器中 - 该代码是为Firefox设计的,但可以在其他方面工作...并扫描您的ID ...并观看魔术发生...

有一种解决此问题的方法。我尝试了许多方法,发现它们是不一致的。

首先,在您的textarea输入上,您想收听@focus@blur事件以打开(和关闭)键盘输入的事件听众。

当Textarea焦点时,您要添加以下事件侦听器。

var myData = '';
var previousKey = '';
eventListener (event) {
    event.preventDefault()
    if (event.key.length === 1) {
        if (previousKey == 'Control' && event.key == 'j') {
            myData += 'n'
        } else {
            myData += event.key
        }
        previousKey = event.key
    }
}
var textarea = document.getElementById('textarea')
textarea.addEventListener('focus', (event) => {
  document.addEventListener('keydown', eventListener);
});
textarea.addEventListener('blur', (event) => {
  document.removeEventListener('keydown', eventListener);
});

本质上,当输入焦点并记录所有字符输入时,您可以停止所有键盘输入

然后,您只需要将myData作为驾驶执照解析。

当用户单击输入框时,事件侦听器会消失,因此键盘将再次工作。

最新更新