慢速客户端上的JavaScript验证

慢速客户端上的JavaScript验证,javascript,arrays,client-side-validation,Javascript,Arrays,Client Side Validation,我假设这是客户端或网络问题,不管怎样,这就是问题所在 我使用文本输入(#id_条形码)从条形码扫描仪捕获代码,因为扫描仪会自动添加一个[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

我假设这是客户端或网络问题,不管怎样,这就是问题所在

我使用文本输入(
#id_条形码
)从条形码扫描仪捕获代码,因为扫描仪会自动添加一个
[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>

如果我再等待一秒钟并输入相同的代码,它将进行验证。如何克服此问题?

我没有看到任何定义
文本的代码(在
text.match
中),也没有看到任何将代码添加到
scannedCodes
的代码。如果这种情况发生在AJAX调用中,那么显然您会遇到延迟问题。在发送AJAX调用之前,将代码添加到扫描代码列表中。在输入代码之前,是否检查扫描仪是否触发了enter?在这种情况下,你的情况就会发生。@NiettheDarkAbsol抱歉,更新了我的问题。AJAX调用是为了一些东西else@LucasRodrigues对但问题是,我手动模拟扫描仪,粘贴并点击回车键quickly@CésarBustíos你能创建一个运行的示例吗?我没有看到任何定义
文本的代码(在
text.match
中),也没有看到任何将代码添加到
scannedCodes
的代码。如果这种情况发生在AJAX调用中,那么显然您会遇到延迟问题。在发送AJAX调用之前,将代码添加到扫描代码列表中。在输入代码之前,是否检查扫描仪是否触发了enter?在这种情况下,你的情况就会发生。@NiettheDarkAbsol抱歉,更新了我的问题。AJAX调用是为了一些东西else@LucasRodrigues对但问题是,我手动模拟扫描仪,粘贴并点击回车键quickly@CésarBustíos你能创建一个运行示例吗?
console.log(scannedCodes);
["BSG2410100141820", "BSG2410100141820", "BSG2410100141820"]