小编sha*_*vik的帖子

如何区分JavaScript中的扫描器输入和键盘输入?

我经历了答案,并遇到了两种方法,可以帮助区分扫描仪和键盘输入。可以通过以下方式完成:

  • 基于时间:扫描仪输入比手动键盘输入更快。

  • 基于前缀:在条形码或扫描仪(扫描仪设备内置)中添加前缀,并使用它来识别扫描仪输入。

这里是链接:链接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();
Run Code Online (Sandbox Code Playgroud)

我的条形码格式为:〜xxx-xxx-xxxxxx,其中x可以是0-9之间的任何数字。如果将数字字符附加到条形码上,则会导致数据库中的错误插入。

我曾尝试比较键盘输入和扫描仪输入的事件,但无济于事。我考虑过在每个数字前添加额外的字符,然后如果出现连续数字,则使扫描的条形码无效。但是我认为这不是解决此问题的最佳方法。有人可以帮我吗?

javascript jquery barcode-scanner

11
推荐指数
1
解决办法
1351
查看次数

标签 统计

barcode-scanner ×1

javascript ×1

jquery ×1