Я прошел через ответы и наткнулся на два способа, которые могут помочь в различении входов сканера и клавиатуры.Это можно сделать с помощью:
По времени: Входы со сканера работают быстрее, чем ручные вводы с клавиатуры.
На основе префикса: Добавьте префикс к штрих-кодам или сканерам (встроенным в устройства сканера) и используйте его для идентификации входов сканера.
Вот ссылки: ссылка 1 , ссылка 2 , которые я использовал для ссылок.
ПроблемаЯ столкнулся с тем, что всякий раз, когда пользователь вручную вводит некоторые клавиши клавиатуры во время запуска события сканирования, он добавляется к входу сканера и приводит к противоречивым результатам.
Вот код, который я использую:
var BarcodeScannerEvents = function(){
this.initialize.apply(this, arguments);
};
BarcodeScannerEvents.prototype = {
initialize: function() {
$(document).on({
keypress: $.proxy(this._keypress, this)
});
},
_timeoutHandler: 0,
_inputString: '',
_keypress: function (e){
if(this._timeoutHandler){
clearTimeout(this._timeoutHandler);
}
this._inputString += String.fromCharCode(e.which);
//CHECKS FOR VALID CHARACTERS WHILE SCANNING
this._timeoutHandler = setTimeout($.proxy(function(){
if(this._inputString.length <= 10){
this._inputString = '';
return;
}
$(document).trigger('barcodescanned', this._inputString);
this._inputString = '';
}, this), 20);
}
};
new BarcodeScannerEvents();
Формат моего штрих-кода: ~ xxx-xxx-xxxxxx, где x может быть любым числом от 0 до 9.Если к штрих-коду добавляется символ, который является числом, это приводит к неправильным вставкам в базу данных.
Я пытался сравнивать события, поступающие с клавиатуры и сканера, но безрезультатно.Я подумал о том, чтобы добавить дополнительные символы перед каждой цифрой, а затем лишить законной силы отсканированный штрих-код, если появятся последовательные цифры.Но я не считаю, что это лучший способ решить эту проблему.Может ли кто-нибудь помочь мне здесь?