Php 已使用条形码扫描仪功能键控执行两次
我已经在每个学生的ID中分配了一个条形码。我用条形码扫描仪扫描他们的身份证,检查他们的出勤情况。我使用的是keyup函数,但每次我扫描他们ID中的条形码时,keyup函数都会执行两次Php 已使用条形码扫描仪功能键控执行两次,php,jquery,ajax,laravel,Php,Jquery,Ajax,Laravel,我已经在每个学生的ID中分配了一个条形码。我用条形码扫描仪扫描他们的身份证,检查他们的出勤情况。我使用的是keyup函数,但每次我扫描他们ID中的条形码时,keyup函数都会执行两次 <script type="text/javascript"> function loaddelegates($barcode) { var xhttp = new XMLHttpRequest(); xhttp.on
<script type="text/javascript">
function loaddelegates($barcode)
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("getdel").innerHTML = this.responseText;
$("#barcode").focus();
}
};
xhttp.open("GET", "mealclient/" + $barcode, true);
xhttp.send();
}
$(function() {
$('#barcode').attr('maxlength','13');
$(document).on('keyup','#barcode',function(e) {
e.preventDefault();
if ($(this).val().length >= 13) {
loaddelegates($(this).val());
return false;
}
});
});
函数loaddelegates($barcode)
{
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
document.getElementById(“getdel”).innerHTML=this.responseText;
$(“#条形码”).focus();
}
};
xhttp.open(“GET”、“mealclient/”+$barcode,true);
xhttp.send();
}
$(函数(){
$(“#条形码”).attr('maxlength','13');
$(文档).on('keyup','#barcode',函数(e){
e、 预防默认值();
如果($(this).val().length>=13){
loaddelegates($(this.val());
返回false;
}
});
});
简洁的
@foreach($餐费作为$餐费)
@endforeach
@foreach($餐费作为$餐费)
{{strtoupper($mean->mean)}
@endforeach
条形码
名称
组织机构
位置
学校
我可以想象条形码阅读器在某种程度上模拟按键,就像你在听键盘一样。可能它模拟了两个键,例如,Ctrl+V
将调用您的函数两次
要调试此问题,我建议添加
var code = e.keyCode || e.which;
console.log(code);
在你的键盘监听程序的最顶端。检查控制台输出。因此,如果读者真的同时模拟了两个键,你当然可以忽略其中一个
编辑:正如OP所写,控制台中除了另一个键代码之外还显示13。
13是CR(回车)的ASCII码
因此,要忽略此键,请执行以下操作:
$(document).on('keyup','#barcode',function(e) {
e.preventDefault();
var code = e.keyCode || e.which;
if (code != 13 && $(this).val().length >= 13) {
loaddelegates($(this).val());
}
});
它的钥匙是54。。钥匙代码54是钥匙6。这是您扫描条形码的最后一个号码吗?只叫过一次?尝试使用几种不同的条形码,同时注意两个键可能是13,这是我之前已经想到的问题。这是ASCII字符CR(回车符),试着忽略这一个,就像如果(代码!=13)…我忽略那个键的代码是什么?对不起,我在开发websok时知道,我将用代码更新我的答案。所以当你扫描一个新的时,13总是显示出来?
$(document).on('keyup','#barcode',function(e) {
e.preventDefault();
var code = e.keyCode || e.which;
if (code != 13 && $(this).val().length >= 13) {
loaddelegates($(this).val());
}
});