Javascript 从输入id生成二维码=";信息2“;自动执行,无需用户单击任何其他内容

Javascript 从输入id生成二维码=";信息2“;自动执行,无需用户单击任何其他内容,javascript,api,input,qr-code,Javascript,Api,Input,Qr Code,我正试图从id=“message2”自动生成二维码,但它总是以未定义的形式返回 函数generateBarCode() { var nric=$('#text').val(); var url='1〕https://api.qrserver.com/v1/create-qr-code/?data=“+nric+”&;尺寸=50x50'; $(“#条形码”).attr('src',url); } 复制 有几件事: 在JavaScript域中,不需要在字符串中转义&。换句话说,您不需要

我正试图从id=“message2”自动生成二维码,但它总是以未定义的形式返回

函数generateBarCode()
{
var nric=$('#text').val();
var url='1〕https://api.qrserver.com/v1/create-qr-code/?data=“+nric+”&;尺寸=50x50';
$(“#条形码”).attr('src',url);
}

复制

有几件事:

  • 在JavaScript域中,不需要在字符串中转义
    &
    。换句话说,您不需要
    &;应该是&

  • 要发送到QR服务的文本应通过
    encodeURIComponent()

  • 您的文本
    有两个“id”值,因此jQuery搜索无法找到它

您的函数应该如下所示:

 function generateBarCode() {
   var nric = $('#text').val();
   var url = 'https://api.qrserver.com/v1/create-qr-code/?data=' + 
       encodeURIComponent(nric) + 
       '&size=50x50';
   $('#barcode').prop('src', url);
 }

您不应该有
&在您的URL字符串中;它应该是一个普通的
&
。此外,在将文本内容连接到URL之前,您应该通过
encodeURIComponent()
传递文本内容(
nric
)。此外,您不必使用
.attr()
;最好使用
.prop()
来设置“src”。@Pointy您是否介意在这种情况下通过删除必要的内容来提供帮助?因此您的
有两个“id”值。我可以用空格将这些id合并为一个吗?我应该补充一点,有时您可能需要JavaScript字符串中的HTML实体转义;这取决于字符串将要执行的操作。这不是其中一种情况。谢谢,现在可以了,但我必须输入数据,然后单击输入字段中的“关闭”以生成QR,因此我认为现在的问题是消息2被自动转换为QR码,但谢谢@pointyy您必须单击“关闭”输入,因为这是您设计工具的方式;输入在“blur”事件上调用函数,该事件发生在字段失去焦点时。我知道,我正在尝试寻找替代方法,或者只是完全删除它,并通过jquery更改输入的每个字符。您可以看到切换到
oninput
而不是
onblur
是否可以满足您的要求。