【问题标题】:How to catch input on document[keypress] on window in javascript from Zebra mc330m scanner?如何从 Zebra mc330m 扫描仪的 javascript 窗口中捕获文档 [keypress] 上的输入?
【发布时间】:2019-07-13 02:18:03
【问题描述】:

我将扫描仪配置为在输入末尾发送 Enter 并且 js 正确读取它但其他字符丢失了。

我尝试使用 event.keyCode、event.which、event.charCode 对输入字符进行解码,但没有任何效果。如果我将它附加到正常输入,它就可以工作。 它也适用于浏览器地址栏 (chrome)。但是当我将它附加到文档 ['onkeypress'] 时,它不会读取字符。

我从这里尝试了 Martin Orth 解决方案:https://developer.zebra.com/thread/35513 但我无法让它工作我什至不知道它是否是同一个扫描仪。

从这里我了解到扫描仪正在发送 ASCII 字符,而 javascript 没有机制来读取它们? https://developer.zebra.com/thread/34536

如果有人知道此问题的解决方案,我们非常感谢您的帮助。如果可能的话,我更喜欢 js/jquery。

【问题讨论】:

    标签: javascript jquery barcode


    【解决方案1】:

    这段代码的作用是创建一个聚焦于它的输入,但绝对定位在屏幕之外,因为 IE 在聚焦于隐藏的文本字段时存在问题。然后检测输入的更改并将其输出到控制台。

    $(document).ready(function(){
         $(".scanner-input").focus().on("input",function(){
              let barcode = $(this).val();
              console.log(barcode);
              $(this).val("");
         }).blur(function(){
             $(this).focus();
         });
    });
    .scanner-input{position:absolute;left:-10000px;}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <input type="text" class="scanner-input">

    【讨论】:

    • 谢谢,但不幸的是,用户将需要扫描多个条形码,而不仅仅是一个,因此如果输入位于移动设备上的可见屏幕之外,他们将很难重新获得并重新聚焦跨度>
    • @marto,我做了一点修改,这将允许这样做。基本上,在您抓取条形码后,它会清空输入字段,然后他们可以再次扫描。我还更新了代码,所以如果输入失去焦点,它将获得焦点。
    • 这是一个非常好的答案。正如您从这些论坛帖子中看到的那样,某些设备浏览器允许您从 DOM 读取 onKeyPress,但不是所有设备,而此方法应该在 所有 设备上可靠地工作。您可以使用 Zebra 的企业浏览器或混合框架来实现相同的控制,但对于纯基于 Chrome 的解决方案,我没有比这个答案更好的建议,至少在 Zebra 对 DataWedge 进行一些更改以允许这样做之前工作。为清楚起见,我为 Zebra 工作。
    【解决方案2】:

    此功能最近被添加到 DataWedge 7.3 中,该功能包含在最新的 MC33 操作系统更新(02.13.15 - LG 更新 16)中 - 我写了一篇关于如何使用它的博客:https://developer.zebra.com/blog/listening-keypress-events-datawedge。为清楚起见,我为 Zebra 工作

    【讨论】:

    • 感谢您的支持达林!这才是真正的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2019-01-08
    • 2011-02-07
    • 2012-12-06
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多