can you please help me how to split a string in an input and insert those split strings into different inputs? I already tried some codes that I found here but it still didn’t work.
I actually want to store the string in that 2 different inputs (those not hidden) after exectuting the functions
This is the source code:
function split() {
var strings = $("#qrstring").attr("value").split("<br>");
if (strings.length == 2) {
qrData(strings, 1);
}
}
function qrData(value, index) {
if (value.length == 2) {
$(".idnum").attr("value", value[0]);
$(".idname").attr("value", value[1]);
} else {
alert("malformed strings");
}
}
let scanner = new Instascan.Scanner({
video: document.getElementById('preview'),
mirror: false
});
scanner.addListener('scan', function(c) {
window.document.getElementById('qrstring').value = c;
});
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);
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <input type="hidden" id="qrstring" value="" split(); qrData();> <label id="label">Account ID </label> <input type="text" name="accId" required="" class="idnum" style="width: 108px;margin-right: 15px;" value=""> <br/> <label id="label">Customer Name </label> <br/> <input type="text" readonly="" name="name" class="idname" required="" value="">
Advertisement
Answer
Try this code
let scanner = new Instascan.Scanner({
video: document.getElementById('preview'),
mirror: false
});
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);
});
$(function() {
const re = /(d+-d+)s+(.*)/;
scanner.addListener('scan', function(content) {
console.log(content);
if (!re.test(content)) {
console.log("malformed strings")
return;
}
const [_, id, name] = content.match(re);
$(".idnum").val(id);
$(".idname").val(name.trim());
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://rawgit.com/schmich/instascan-builds/master/instascan.min.js"></script> <label id="label">Account ID </label> <input type="text" name="accId" required="" class="idnum" style="width: 108px;margin-right: 15px;" value=""> <br/> <label id="label">Customer Name </label> <br/> <input type="text" readonly="" name="name" class="idname" required="" value="">
Works on this QR
One line
Two lines
Result


