如何在返回之前修改此qr函数输出

问题描述 投票:0回答:2

我尝试使用this code作为基础,并希望修改输出,扫描一个二维码后再将其放入文本框。

假设我有一个包含“12345”的qr,我想扫描它并在文本框中输出整个内容的“123”作为输出。但我无法管理在js部分中放置变量的位置,获取putput,修改它,然后将其返回到输入字段。

我是js的新秀,所以这可能是一个非常愚蠢的问题。

就像在js部分的最后一行:

var test = reader.readAsDataURL(node.files[0]);
var output = test.substr(0,3);
return output;

这是完整的code on w3schools.com

javascript qr-code
2个回答
0
投票

你正在修改错误的变量!

function openQRCamera(node) {
  var reader = new FileReader();
  reader.onload = function() {
    node.value = "";
    qrcode.callback = function(res) {
      if(res instanceof Error) {
        alert("No QR code found. Please make sure the QR code is within the camera's frame and try again.");
      } else {
//THIS LINE ARE UPDATING THE INPUT
//YOU CAN CHANGE THE "res" var
res = "RESULT: "+res
        node.parentNode.previousElementSibling.value = res;
      }
    };
    qrcode.decode(reader.result);
  };
  reader.readAsDataURL(node.files[0]);
}

0
投票

看起来像我的解决方案,但我无法弄清楚它运行。

我将你的函数添加到js部分:

function openQRCamera(node) {
  var reader = new FileReader();
  reader.onload = function() {
    node.value = "";
    qrcode.callback = function(res) {
      if(res instanceof Error) {
        alert("No QR code found. Please make sure the QR code is within the camera's frame and try again.");
      } else {
        node.parentNode.previousElementSibling.value = res;
      }
    };
    qrcode.decode(reader.result);
  };
  reader.readAsDataURL(node.files[0]);
  alert (getTruncatedQRCode(reader, node, "3"));
}

function getTruncatedQRCode(reader, node, index) {
    if (!(reader && node && Array.isArray(node.files))) return;
    const code = reader.readAsDataURL(node.files[0]);
    if (code) return code.substr(0, index);
}

但警报只显示undefined :(

© www.soinside.com 2019 - 2024. All rights reserved.