JavaScript 实现扫码枪回车提交与焦点自动跳转

作者:流萤时间:2026-10-27 18:18:49浏览:276

本文介绍如何使用 JavaScript 监听键盘输入事件,通过判断回车键触发扫码枪数据提交。代码演示了动态创建隐藏字段、组装表单数据并自动提交至指定接口,同时实现了当输入框为空时自动将焦点跳转至指定元素的功能,适用于物流运单扫描场景。

JavaScript 扫码提交与焦点控制实现

具体实现逻辑如下所示:

在 body 标签上添加 onKeyPress 事件监听,调用 javascript:saomiao(event,555) 以监控键盘输入;

核心代码实现如下:

定义扫描处理函数 saomiao,接收事件对象 event 和参数 n:
{
初始化变量 code 为 0;
获取键盘输入事件的 keyCode 赋值给 code;
判断 code 是否等于 '13'(即回车键);
     {
若参数 n 大于 0,则开始执行后续判断逻辑;
          {
检查 ID 为 'logisticsno' 的元素值是否为空;
          {
若为空,弹出提示框显示'请扫描输入运单号!';
获取 ID 为 'logisticsno' 的元素引用 r;
调用 r.focus() 将该元素设为焦点;
返回 false 阻止默认行为;
                   }
否则,判断当前获得焦点的元素名称 document.activeElement.name 是否不等于 'deliver_money';
             {
获取 ID 为 'deliver_money' 的元素引用 r;
调用 r.focus() 将该元素设为焦点;
               }
若上述条件均不满足,即所有校验通过;
             {
获取 ID 为 'logisticsno' 的元素引用 r;
调用 r.focus() 保持焦点在该元素上;
使用 document.createElement('form') 创建一个新的表单元素 f;
设置表单 f 的 action 属性为 '/modules/logistics/start.php';
将表单 f 追加到 document.body 中;
                    
使用 document.createElement('input') 创建一个新的输入元素 e;
设置 e.type 为 'hidden';
设置 e.name 为 'act';
设置 e.id 为 'act';
设置 e.value 为 'logisticsno';
将元素 e 追加到表单 f 中;
                    
初始化变量 data_id 为 0;
获取所有 name 为 'orderdataid_no[]' 的元素集合 g;
初始化变量 h 为 0;
遍历 g 集合,索引从 h=0 到 g.length;
                     {
在循环中将 g[h].value 赋值给 data_id;
                          }
var order_no=0;
 var gg=document.getElementsByName("order_no[]");
 var hh=0;
 for(var hh=0;hh<gg.length;hh++)
 {
 order_no=gg[hh].value;
 }
 var k=document.createElement('input');
 k.type='hidden';
 k.name='order_no';
 k.id='order_no';
 k.value=order_no;
 f.appendChild(k);
 f.submit();//表单提交
 } 
 } 
 }
 }
<body onKeyPress="javascript:saomiao(event,555);">//开始监控键盘输入
 
作者最新文章