Штрих-код чтения значений в текстовое поле? - PullRequest
0 голосов
/ 15 июня 2011

У меня есть сканер штрих-кода, который считывает строку штрих-кода и отображает в активном текстовом поле. также нет согласованного конечного символа штрих-кода или стандартной длины (у меня есть 5 различных размеров длины. Мне нужно извлечь значения из отсканированных данных. поэтому значения извлечения также зависят от длины штрих-кода.

Итак, как бы я применил метод, когда была прочитана ВЕСЬ строка?

Я использую 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 ]

2 голосов
/ 15 июня 2011

Я немного поработал со свайпером, там есть похожие проблемы.Данные поступают в виде быстрой посылки, но не отправляется согласованная строка «конец данных».Решение состоит в том, чтобы использовать setTimeout и ждать - когда ввод остановится, вы запускаете код обработки.

В зависимости от вашего оборудования, количество ожидаемого времени ожидания может варьироваться.Поэкспериментируйте с этим кодом, чтобы настроить время ожидания, просто измените аргумент duration на setTimeout.Я запустил его на 500 мс - это очень хорошо работает для картографов.Простите, если в моем коде есть какие-то незначительные колебания - я не парень jQuery:)

$(document).ready(function() {
    $("#bcode")
        .focus()
        .attr('autocomplete', 'off')
        .keyup(function(event){
            // if the timer is set, clear it
            if (barcode_watch_timer !== false)
                clearTimeout(barcode_watch_timer);
            // set the timer to wait 500ms for more input
            barcode_watch_timer = setTimeout(function () {
                process_barcode_input();
            }, 500);
            // optionally show a status message
            //$("#status").html('waiting for more input...').show();
            // return false so the form doesn't submit if the char is equal to "enter"
            return false;
        });
});

var barcode_watch_timer = false;
function process_barcode_input() {
    // if the timer is set, clear it
    if (barcode_watch_timer !== false)
        clearTimeout(barcode_watch_timer);

    // grab the value, lock and empty the field
    var name = $("#bcode").val();
    $("#bcode").attr('disabled', true);

    // empty the status message
    $("#status").empty();

    // add a loading message
    $("#status").html('<img align="absmiddle" src="images/loading.gif" /> Checking availability...').show();
    // send the ajax request
    $.ajax({
        type: "POST",
        url: "namecheck.php",
        data : "bcode=" + name,
        success: function(msg) {
            // unlock the field, show a success status
            $("#bcode").attr('disabled', false);
            $("#status").html(msg).show();
        }
    });
}
1 голос
/ 15 июня 2011

Это должна быть текстовая область?

Последний считыватель штрих-кода, который я использовал, всегда заканчивался символом новой строки. Если вы вводите в <input type="text"/> возвращаемый символ, скорее всего, попытается отправить форму, и вы можете использовать onSubmit для захвата события и обработки вашего ввода.

0 голосов
/ 15 июня 2011

Попробуйте наблюдать поле с кодом по интервалу

Пример

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 );
...