条形码读取值到文本框?

时间:2011-06-15 16:08:07

标签: php ajax barcode

我有一个条形码扫描器,它读取条形码的字符串并显示在活动文本框中。条形码或标准长度也没有一致的结束字符(我有5种不同的长度尺寸.16,17,18,19,20)。我需要从扫描数据中提取值。所以提取值也取决于条形码长度。

那么,当读入WHOLE字符串时,我将如何开始触发方法?

我使用php和ajax来做这件事。

$(document).ready(function()
{



    $("#bcode").focus();
    //prevents autocomplete in some browsers
    $("#bcode").attr('autocomplete', 'off').keyup(function(event)
    {

                var name = $("#bcode").val();



            $("#status").empty();
            if(name.length > 17 ) `// need to check all possible length values like this`
            {
                selectAll();

                $("#status").html('<img align="absmiddle" src="images/loading.gif" /> Checking availability...').show();




     $.ajax({
                    type: "POST",
                    url: "namecheck.php",
                    data : "bcode=" + name,
                    success: function(msg)
                    {
                        $("#status").html(msg).show();
                    }
                    });

        }
        else
        {
            $("#status").html('').addClass('err').show();
        }
    });
});

3 个答案:

答案 0 :(得分:2)

我用卡片刷卡做了一些工作,那里也有类似的挑战。数据快速突发,但没有一致的“数据结束”字符串被发送。解决方案是使用setTimeout并等待 - 当输入停止时,然后激活处理代码。

根据您的硬件,您想要做的等待量会有所不同。尝试使用此代码调整等待时间,只需调整duration的{​​{1}}参数即可。我已经在500毫秒开始了它 - 这对于卡片刷子非常有效。如果我的代码中有任何轻微的摆动,请原谅我 - 我不是一个jQuery人:)

setTimeout

答案 1 :(得分:1)

是否需要成为文本区域?

我使用的最后一个条形码阅读器总是以换行符结束。如果您输入<input type="text"/>,则返回字符可能会尝试提交表单,您可以使用onSubmit捕获事件并处理输入。

答案 2 :(得分:0)

尝试按间隔代码

观察字段

实施例

setInterval(function() {
    var value = $("#code").val(),
        prev_value = $("#code").attr("prev_value");

    if (prev_value == value) {// compare with prevent value for detecting canges
        console.log("value is not changed");
        return;
    }
    //if (value.length < 17) {
        //exeption
        // or reset value $("#code").val(prev_value);
        //return;
    //}
    if (value[value.length-1] == "\n") {// check last symbol
        console.log(value);// Do something with you code eg send by AJAX
    }
    $("#code").attr("prev_value", value); // save current value for compare later
}, 1000 );