嗨,这是我的代码工作正常,当你键入文本它转换为qr代码,但我想让它自动化。我有一个生成随机数的php函数,因此不应该输入文本,而是应该通过该函数的值生成qrcode。
这是我的html页面代码:
<!DOCTYPE html>
<body>
<input id="text" type="text" value="http" style="width:80%" /><br />
<div id="qrcode"></div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='http://davidshimjs.github.com/qrcodejs/qrcode.min.js'></script>
<script src="js/index.js"></script>
</body>
</html>
这是我的javascript函数:
var qrcode = new QRCode("qrcode");
function makeCode () {
var elText = <?php echo random_str(6); ?> ;
if (!elText.value) {
alert("Input a text");
elText.focus();
return;
}
qrcode.makeCode(elText.value);
}
makeCode();
$("#text").
on("blur", function () {
makeCode();
}).
on("keydown", function (e) {
if (e.keyCode == 13) {
makeCode();
}
});
这是我想要实现的php函数,以便生成一个随机数,并在此基础上形成qrcode
<?php
function random_str($length, $keyspace = '0123456789')
{
$str = '';
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$str .= $keyspace[random_int(0, $max)];
}
return $str;
}
?>
答案 0 :(得分:2)
当您使用基于输入的版本时,您编写了makeCode()函数以从输入框中提取QRCode的值。现在您正在使用文字值,您需要修改makeCode()以及它如何与源编号一起使用 - 现在是一个javascript文字值而不是控件。
function makeCode () {
var elText = "<?php echo random_str(6); ?>" ; // note quotes around random no.
if (elText.length === 0) { // is the random string zero length
alert("Random number is blank - weird !");
return;
}
qrcode.makeCode(elText);
}
来自php的随机数周围的引号将保护您免受返回空白的风险。我不知道这有多大可能,但如果确实发生了,那么JS就会失败。由于没有数字操作,我们可以将其视为字符串。在这种情况下,我们可以测试它的长度并决定是否需要制作QRCode。
答案 1 :(得分:1)
这取决于你的html呈现方式
1-如果它是来自php并且你这个函数在同一个文件中或者可以从这个php文件调用,你可以这样做:
<script>
var qrcode = new QRCode("qrcode");
qrcode.makeCode('<?php echo random_str(3); ?>');
</script>
2-如果它是一个html文件,你不能调用该函数,你可以使用ajax调用一个php文件,它给你随机值并使用它