问题:我正在使用康耐视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/

10-11 03:09
查看更多