#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()
.