Javascript 处理扫描仪输入的按键事件仅返回第一个字符

Javascript 处理扫描仪输入的按键事件仅返回第一个字符,javascript,jquery,barcode-scanner,Javascript,Jquery,Barcode Scanner,我使用Datalogic Heron扫描仪输入条形码,并使用此代码获取条形码值- <input type="text" id="scannerBarcode" /> 及 文件.添加的文本列表器(“按键”,功能(e){ 警惕(e.key); $(“#scannerBarcode”).val(e.key); e、 预防默认值(); }); 我有两个问题- 使用e.key只返回第一个字符。我不知道如何获取完整的条形码值。当我把焦

我使用Datalogic Heron扫描仪输入条形码,并使用此代码获取条形码值-

<input type="text" id="scannerBarcode" />


文件.添加的文本列表器(“按键”,功能(e){
警惕(e.key);
$(“#scannerBarcode”).val(e.key);
e、 预防默认值();
});      
我有两个问题-

  • 使用e.key只返回第一个字符。我不知道如何获取完整的条形码值。当我把焦点放在一个简单的txt文件上时,条形码显示整个值
  • 警报会闪烁,不会等待我单击“确定”
  • 这是我第一天使用任何扫描仪,所以如果这是一个愚蠢的问题,请忍受

    任何人都可以请指导如何解决上述问题


    谢谢大家!

    问题在于条形码扫描器是标准的键盘输入,但如果不将该值发送到输入字段,您将无法获得您注意到的整个字符串。你可以试试我关于斑马的回答(同样的问题)

    与现有代码保持一致的另一个选项是,不要发出警报,而是将
    附加到每个
    按键上的条形码值上

    var barcode=document.querySelector(#scannerBarcode”);
    文件.添加的文本列表器(“按键”,功能(e){
    如果(例如,keyCode!=13){
    条形码.value+=e.key;
    }
    e、 预防默认值();
    });
    
    问题在于条形码扫描仪是标准的键盘输入,但如果不将该值发送到输入字段,您将无法获得您注意到的整个字符串。你可以试试我关于斑马的回答(同样的问题)

    与现有代码保持一致的另一个选项是,不要发出警报,而是将
    附加到每个
    按键上的条形码值上

    var barcode=document.querySelector(#scannerBarcode”);
    文件.添加的文本列表器(“按键”,功能(e){
    如果(例如,keyCode!=13){
    条形码.value+=e.key;
    }
    e、 预防默认值();
    });
    
    对于由全局文档按键事件管理的条形码输入,在读取条形码时,可能会出现键盘事件突发,因此需要存储字符并在新扫描之间清除它们。这段代码将允许您附加来自快速输入序列的字符,并清理它以进行新的扫描

    var scannerInput=“”;
    var lastClear=0;
    文件.添加的文本列表器(“按键”,功能(e){
    控制台日志(e.key);
    清除超时(lastClear);
    lastClear=window.setTimeout(函数(){
    扫描输入=”;
    },500);
    扫描输入+=e.键;
    $(“#scannerBarcode”).val(scannerInput);
    e、 预防默认值();
    }); 
    
    对于由全局文档按键事件管理的条形码输入,在读取条形码时可能会出现键盘事件突发,因此需要存储字符并在新扫描之间清除它们。这段代码将允许您附加来自快速输入序列的字符,并清理它以进行新的扫描

    var scannerInput=“”;
    var lastClear=0;
    文件.添加的文本列表器(“按键”,功能(e){
    控制台日志(e.key);
    清除超时(lastClear);
    lastClear=window.setTimeout(函数(){
    扫描输入=”;
    },500);
    扫描输入+=e.键;
    $(“#scannerBarcode”).val(scannerInput);
    e、 预防默认值();
    }); 
    
    
    
    您是否试图捕捉整个文档上的按键,而不仅仅是输入?将
    警报(e.key)
    更改为
    console.log(e.key)
    以查看在
    按键
    事件期间没有阻塞警报窗口的情况下会发生什么(并在控制台窗口中查看结果),因为它们通常会触发多个事件,不止一个。永远不要调试警报…问题是条形码扫描仪是标准的键盘输入,但如果不将该值发送到输入字段,您将无法获得您注意到的整个字符串。您可以尝试我关于zebra(同一问题)的回答。是的,我试图捕获整个文档的按键,因为输入文本框可能/可能没有焦点。您是否试图捕获整个文档上的按键,而不仅仅是输入?将
    警报(e.key)
    更改为
    控制台.log(e.key)
    查看在按下
    键的过程中没有阻塞警报窗口时会发生什么(并在控制台窗口中查看结果),因为它们通常会触发多个事件,而不仅仅是一个事件。永远不要调试警报…问题是条形码扫描仪是标准的键盘输入,但如果不将该值发送到输入字段,您将无法获得您注意到的整个字符串。您可以尝试我关于zebra的回答(同一问题)是的,我试图捕获整个文档的按键,因为输入文本框可能/可能没有焦点。
    
    <script>
        document.addEventListener("keypress", function(e) {
            alert(e.key);
            $("#scannerBarcode").val(e.key);
            e.preventDefault();
            });      
    </script>