sha*_*vik 11 javascript jquery barcode-scanner
我经历了答案,并遇到了两种方法,可以帮助区分扫描仪和键盘输入。可以通过以下方式完成:
基于时间:扫描仪输入比手动键盘输入更快。
基于前缀:在条形码或扫描仪(扫描仪设备内置)中添加前缀,并使用它来识别扫描仪输入。
我遇到的问题是,在触发扫描事件时,只要用户手动键入一些键盘键,就会将其添加到扫描仪输入中,并导致结果不一致。
这是我正在使用的代码:
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();
Run Code Online (Sandbox Code Playgroud)
我的条形码格式为:〜xxx-xxx-xxxxxx,其中x可以是0-9之间的任何数字。如果将数字字符附加到条形码上,则会导致数据库中的错误插入。
我曾尝试比较键盘输入和扫描仪输入的事件,但无济于事。我考虑过在每个数字前添加额外的字符,然后如果出现连续数字,则使扫描的条形码无效。但是我认为这不是解决此问题的最佳方法。有人可以帮我吗?
无需从键盘/条形码扫描仪进行判断。
如果您在任何设备上将Enter(回车)键通知确定为输入完成,则可以将其用作执行价格查询/输入值验证的最简单触发器。
大多数扫描仪可以在扫描的条形码数据中添加后缀代码以进行通知。
最常用的是Enter键,但也可以使用Tab键。
通过条形码扫描仪发送后缀代码,扫描仪通知和按键输入混合在一起的可能性比超时检测要低得多。
您可以执行以下操作。
例如,请参见本文。
输入键执行功能
另外:
您的担忧似乎被不常发生的情况所淹没。
如果确实发生问题,则应该放弃使用JavaScript。
请通过以下方法通过其他程序获取扫描仪数据。请以某种方式将其通知应用程序。
如果要继续进行键盘输入仿真,最好在通知浏览器或应用程序之前捕获数据。
SetWindowsHookExW函数 / LowLevelKeyboardProc回调函数
EasyHook / Indieteur / GlobalHooks
钩入linux键事件处理 / uinput-mapper
Linux键盘驱动程序 / LKL Linux KeyLogger / kristian / system-hook
在Linux下在X上进行系统范围的键盘钩 / 尝试在Ubuntu Linux / 10.5.2键盘中构建全局键盘钩时出错和指针事件
或者,将扫描仪设置为串行端口模式,并使用专用程序接收它。
串行API
JavaScript / JQuery与SerialPort / COM1通信
问题标记OPOS /问题标记pos-for-.net /标签问题的JavaPOS
归档时间: |
|
查看次数: |
1351 次 |
最近记录: |