我需要允许用户扫描其驱动程序许可证,并从中获取信息,用 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
作为驾驶执照解析。
当用户单击输入框时,事件侦听器会消失,因此键盘将再次工作。