当没有输入具有焦点时,Javascript 捕获输入

2023-12-11

我有条形码扫描仪。

有时用户想通过条形码搜索物品。

但他够懒,根本不想用鼠标点击输入。

扫描仪通常输入 8 到 13 个符号的速度非常快,没有人类打字这么快。

这将是完美的解决方案:(1)检测极端输入,如果页面上没有输入元素具有焦点(2),则选择具有特定类别的输入,用扫描仪中的内容填充它并开始搜索。

第二阶段不是问题。我不知道如何从第一阶段开始。

有图书馆吗?

不完美的解决方案是对条形码阅读器进行编程,以某种组合键开始每次输入,并监听该键并将焦点集中在必要的输入上。但这需要其他人的额外工作。

是否可以得到完美的解决方案?


您可以回复keypress on document通过填写该键input并给予它焦点,如果按键的目标不是input:

document.addEventListener("keypress", function(e) {
  if (e.target.tagName !== "INPUT") {
    var input = document.querySelector(".my-input");
    input.focus();
    input.value = e.key;
    e.preventDefault();
  }
});
<input type="text" class="my-input">

我很好奇地发现,如果我不阻止默认设置,设置焦点会使 Chrome 在input(但不是火狐)。因此preventDefault阻止 Chrome 这样做。

如果您需要支持过时的浏览器,您可能需要尝试一下keyCode and/or which而不是使用key。 MDN 声明key支持任何现代 Chrome 或 Firefox 和 IE9+(不包括 Edge)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当没有输入具有焦点时,Javascript 捕获输入 的相关文章

随机推荐

  • Bootstrap 4:未捕获的引用错误:波普尔未定义

    我已经使用 Node 和 Gulp 安装了 Bootstrap 4 在运行该应用程序时出现以下错误 未捕获的引用错误 波普尔未定义 到目前为止 我只使用过 Bootstrap 网格系统 还没有使用过任何需要 Bootstrap JS 的东西
  • SBT 未从根目录运行

    FROM openjdk 8 as build ENV SBT VERSION 1 5 8 ENV APP HOME service RUN apt get update apt get install apt transport http
  • Boost序列化不适用于shared_ptr

    下面的代码编译得很好 include
  • chrome 中 svg 背景周围的奇怪滚动条

    我在添加 svg 文件作为背景时遇到问题 一切看起来都不错 但在 Google Chrome 中 我在 svg 的右侧和底部看到了 stage 非活动滚动条 而不是容器 这是问题结果的屏幕截图 http xmages net show ph
  • 通过连接另一个 char* 来初始化 const char*

    我想重构 const char arr The quick brown 变成这样的东西 const char quick quick const char arr The quick brown 因为字符串 quick 在很多其他地方都被使
  • 从前台服务启动的协程被暂停

    我每秒都会更新一条通知 AndroidEntryPoint class StopwatchService Service Inject lateinit var stopwatch Stopwatch scope private val j
  • 学习 JavaScript:词法与动态作用域

    所以我在读this本书 遵循代码示例并使用节点控制台运行它们 在第 7 章 词法与动态作用域 段落中 作者声称以下代码将导致错误 const x 3 function f console log x this will work conso
  • 实现 p2p 消息广播网络的最新技术是什么?

    我知道快速谷歌可以得到大量的结果 并且关于这个主题的文献非常丰富 而这正是问题所在 在众多可能的解决方案中 我不确定哪一个是满足我的特定需求的最佳 最新的选择 我正在尝试在互联网上实现一个 p2p 网络 其唯一的功能是将消息广播到在线节点
  • 无法在 Cloudfront 层上的 Lambda + API Gateway + Cloudfront 上启用 CORS

    我部署了一个 lambda 它本身返回一个 Access Control Allow Origin 其响应中的标头 我从 API 网关调用它 调用API网关URL时 CORS配置即可 我将 CloudFront 放在 API 前面 但是现在
  • 为 Zend Framework 2 中的所有模块设置通用布局

    我正在开发一个 ZF2 项目 我的目录中有一些模块 module module1 module module2 module module3 module module4 但是 在每个模块中我也分别有特定的布局 module module1
  • Azure 市场:是否可以在托管应用程序产品中使用图像?

    我创建了 Azure 托管应用程序 我在中使用了托管图像mainTemplate json创建新的虚拟机 例如 type Microsoft Compute images apiVersion 2018 04 01 name front i
  • 使用相同的输入在 codeigniter 中上传多个图像

    views
  • boost::asio::streambuf::consume - 注入垃圾字符

    当我失去连接时 在我的服务器代码中 我会尝试永远重新连接 重新连接后 我会向我连接的组件发送一条登录消息 然后该组件发回一个类似于 MyResponse 的登录响应 初始连接工作正常 然而 重新连接后 我在预期消息之前收到垃圾信息 如下所示
  • 根据最大字符长度拆分字符串,但要考虑单词

    因此 在我的程序中 我可以接收各种长度的字符串并将它们发送出去以进行翻译 如果这些字符串具有一定的字符长度 我会收到错误 因此我想在此之前检查并拆分这些字符串 如果有必要 但我不能只在单词中间分割字符串 单词本身也需要完整并考虑在内 例如
  • MySQL INSERT SELECT - 重复行

    我想做一个像这样的 INSERT SELECT 查询 INSERT INTO tableName SELECT FROM anotherTable 问题是 当它发现重复值时 整个事情都会停止 实际上我只是希望它继续并跳过重复项 我知道我可以
  • Postgresql中如何检查字段是否包含字母?

    我的 Postgresql 数据库上有一个文本字段 我只想存储数字字符和特殊字符 例如 和 并且我必须从数据库中删除包含字母的所有行 我该如何做到这一点 即查找指定字段上包含字母的所有行 Using PostgreSQL 正则表达式 该代码
  • 等待后不执行异步/等待代码

    我一直在讨论异步 等待 我尝试了一些简单的例子 但无法理解 async 和 wait 的流程 在下面的代码中 function wait ms return new Promise r gt setTimeout function cons
  • C# - 排序 datagridview 时出现问题

    我苦苦寻找问题的答案 我开发了一个带有一些 datagridview 的 C Winforms 程序 问题是我希望用户能够通过单击列标题对 datagridview 进行排序 我认为这将是标准的 但它就是行不通 我尝试了 dgv Sort
  • 不同国家、州、地理位置的动态下拉列表?

    我让我的用户输入他们的城市 州和国家 但我的困境是如何动态管理它 以便我可以控制输入的内容 同时保持正确的拼写和格式 例如 我目前每个州都有一个静态下拉列表
  • 当没有输入具有焦点时,Javascript 捕获输入

    我有条形码扫描仪 有时用户想通过条形码搜索物品 但他够懒 根本不想用鼠标点击输入 扫描仪通常输入 8 到 13 个符号的速度非常快 没有人类打字这么快 这将是完美的解决方案 1 检测极端输入 如果页面上没有输入元素具有焦点 2 则选择具有特