我认为这是客户端或网络问题,无论哪种方式,这都是问题。
我正在使用文本输入(#id_barcode
)来捕获条形码扫描程序中的代码,因为扫描程序会自动添加[Enter]
我使用以下代码:
<script type="text/javascript">
var scannedCodes = []; // No duplicates allowed!
var re_code = /^B([A-Z]{2}\d{2})(\d{11})$/;
re_code.compile(re_code);
$(document).ready(function() {
$("#id_barcode").keypress(function(e) {
if(e.which == 13) {
processCode();
}
});
});
function processCode() {
var text = $("#id_barcode").val().toUpperCase();
$("#id_barcode").val(""); // Reset input
if (text.match(re_code)) {
var code = text.match(re_code)[0];
if (scannedCodes.indexOf(code) != -1) {
showError("Duplicated code: " + code);
} else {
scannedCodes.push(code);
// More code here including an AJAX call for extra validation
}
}
}
</script>
因此,如果代码已经在数组中,则会显示错误消息,但在某些情况下不会发生这种情况。我运行了一个简单的测试,其中我粘贴了一个随机代码,然后按回车并快速重复模拟条形码扫描仪,这就是发生的事情:
它没有验证:
console.log(scannedCodes);
["BSG2410100141820", "BSG2410100141820", "BSG2410100141820"]
如果我等待另一秒并输入相同的代码,它会验证。我怎么能克服这个?