问题:我正在使用康耐视MX-1000扫描条形码。我有三个文本框,正在尝试扫描条形码并将焦点更改为下一个文本框。但是,当我扫描第三个文本框后,即使焦点位于第一个文本框上,该值也总是输入到第三个文本框中。
原因:我的代码无法退出最里面的Setresultcallback函数。下面是我的方法,有人知道如何退出最里面的回调函数吗?
me.scanner.setResultCallback(function (result) { //First callback
var barcode = result.readString;
var txt1 = barcode;
document.getElementById("TextBox1").value = txt1;
document.getElementById("TextBox2").focus();
me.scanner.setResultCallback(function (result) { //Second callback
var barcode = result.readString;
var txt2 = barcode;
document.getElementById("TextBox2").value = txt2;
document.getElementById("TextBox3").focus();
me.scanner.setResultCallback(function (result) { //Third Callback & stuck here!!! I want to exit this function
var barcode = result.readString;
var txt3 = barcode;
document.getElementById("TextBox3").value = txt3;
document.getElementById("TextBox1").focus();
return;
});
return;
});
return;
});
最佳答案
那是因为您在最后一个回调中保留了第三个字段的回调。以下应解决该问题。
me.scanner.setResultCallback(/* Change here -> */ function firstFieldCallback(result) { //First callback
var barcode = result.readString;
var txt1 = barcode;
document.getElementById("TextRec1").value = txt1;
document.getElementById("TextRec2").focus();
me.scanner.setResultCallback(function (result) { //Second callback
var barcode = result.readString;
var txt2 = barcode;
document.getElementById("TextRec2").value = txt2;
document.getElementById("TextRec3").focus();
me.scanner.setResultCallback(function (result) { //Third Callback & stuck here!!! I want to exit this function
var barcode = result.readString;
var txt3 = barcode;
document.getElementById("TextRec3").value = txt3;
document.getElementById("TextRec1").focus();
/* Change here -> */ me.scanner.setResultCallback(firstFieldCallback);
return;
});
return;
});
return;
});
关于javascript - 在JavaScript中退出回调方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48585547/