You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拆分input内的字符串并将拆分结果插入到其他不同input框中

问题修复方案

存在的问题

  • 函数调用直接写在input标签属性中,未绑定对应触发事件,逻辑完全不生效
  • 扫描完成向qrstring赋值后,没有主动调用拆分函数,赋值逻辑从未执行
  • 使用attr('value')获取输入框值,仅能拿到页面初始渲染的默认值,无法获取扫描后动态写入的内容
  • 拆分分隔符使用<br>不符合常规二维码扫描结果的换行格式,通常二维码内的换行符为\n
  • 两个label使用了重复的id属性,不符合HTML语法规范

修正后代码

JS代码

function qrData(value) {
  if (value.length == 2) {
    // 用val()方法赋值,适配动态更新的dom属性
    $(".idnum").val(value[0].trim());
    $(".idname").val(value[1].trim());
  } else {
    alert("malformed strings");
  }
}

let scanner = new Instascan.Scanner({
  video: document.getElementById('preview'),
  mirror: false
});
scanner.addListener('scan', function(c) {
  document.getElementById('qrstring').value = c;
  // 若确认二维码的分隔符为<br>,可将下方的\n替换为<br>
  const strings = c.split('\n');
  qrData(strings);
});
Instascan.Camera.getCameras().then(function(cameras) {
  if (cameras.length > 0) {
    scanner.start(cameras[0]);
  } else {
    console.error('No cameras found.');
    alert('No cameras found.');
  }
}).catch(function(e) {
  console.error(e);
  alert(e);
});

HTML代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<input type="hidden" id="qrstring" value="">
<label>Account ID </label>
<input type="text" name="accId" required="" class="idnum" style="width: 108px;margin-right: 15px;" value="">
<br/>
<label>Customer Name </label>
<br/>
<input type="text" readonly="" name="name" class="idname" required="" value="">

内容的提问来源于stack exchange,提问作者gellooo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:06:03