Штрих-кодирование — автоматически извлекает значение, если входные данные не пусты

#jquery

#jquery

Вопрос:

Эй, я искал такие вопросы, касающиеся этого материала, но не могу найти что-то полезное, я хочу создать код, который автоматически извлекает данные, если обнаруживает, что поле ввода было заполнено.

Например, я сосредоточен на одном поле ввода, только тогда я нажимаю на сканер штрих-кода, поэтому ввод был заполнен чем-то вроде 71-4112-6568, поэтому дело в том, что я хочу автоматически извлекать эти данные, а затем сохранять их в переменной.

Я пробовал что-то подобное…

 <input name="barcode" type="text" class="barcode">
  

затем

 $('.barcode').keypress(function(){
    var value = $(this).val();
});
  

Использование нажатия клавиши было просто тестом. У него есть ответ, но определенно не то, что я ищу. Может кто-нибудь помочь мне точно исправить этот код. Я собираюсь передать эту переменную в ajax после этого метода. Спасибо,

Комментарии:

1. «Использование нажатия клавиши было просто тестом. У него есть ответ, но определенно не то, что я ищу. » — Почему бы и нет? Что вы ищете?

2. @billyonecan Привет, использую консоль. регистрирует значение, начинающееся с 7, затем 71 до 71-4112-6568, где он завершает все значение, нажатие клавиши определяет его, начиная с первого ввода «7», и если я создаю alert (), он говорит только «7»

3. Имеют ли штрих-коды фиксированную длину? Если это так, вы можете просто проверить this.value.length и, если оно совпадает, сохранить значение / опубликовать запрос

4. Вы можете использовать change или blur , если вам нужно полное значение.

Ответ №1:

Если ваши штрих-коды имеют фиксированную длину, вы можете проверить это в своем keypress обработчике и продолжить, только если он соответствует требованиям, например:

 $('.barcode').on('keypress', function() {

  if (!$.trim(this.value).length == 12) {
    return; 
  }

  console.log(this.value);

});
  

Другим вариантом было бы установить тайм-аут и очищать его при каждом keypress срабатывании:

 var timer = 0;
$('.barcode').on('keypress', function() {

    var _this = this;
    clearTimeout(timer);

    timer = setTimeout(function() {
        console.log( _this.value );
    }, 500);

});
  

Я бы предположил, что ваш сканер штрих-кода вводит данные быстро, и в этом случае вы могли бы уменьшить задержку setTimeout() .

Вот пример