我尝试使用this code作为基础,并希望修改输出,扫描一个二维码后再将其放入文本框。
假设我有一个包含“12345”的qr,我想扫描它并在文本框中输出整个内容的“123”作为输出。但我无法管理在js部分中放置变量的位置,获取putput,修改它,然后将其返回到输入字段。
我是js的新秀,所以这可能是一个非常愚蠢的问题。
就像在js部分的最后一行:
var test = reader.readAsDataURL(node.files[0]);
var output = test.substr(0,3);
return output;
你正在修改错误的变量!
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]);
}
看起来像我的解决方案,但我无法弄清楚它运行。
我将你的函数添加到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
:(