#javascript #api #input #qr-code
#javascript #API #ввод #qr-код
Вопрос:
Я пытаюсь автоматически сгенерировать qr-код из id =»message2″, но он продолжает возвращаться как неопределенный.
function generateBarCode()
{
var nric = $('#text').val();
var url = 'https://api.qrserver.com/v1/create-qr-code/?data=' nric 'amp;amp;size=50x50';
$('#barcode').attr('src', url);
}
<div>
<div class="form-group">
<div class="input-group mb-3" style="max-width: 400;">
<input style="color: blue;" type="text" class="form-control input-message2" id="new-myInput" value="" readonly="" onclick="select()" input="message2">
<div class="input-group-append">
<button onclick="myFunction()" class="btn btn-primary copyit" data-clipboard-target="#address"><i class="far fa-copy"></i> Copy </button>
</div>
</div>
</div>
</div>
<br>
<input id="new-myInput" id="text" value="" input="message2" style="Width:100%" onblur='generateBarCode();' />
<img id='barcode'
src="https://api.qrserver.com/v1/create-qr-code/?data=HelloWorldamp;amp;size=100x100"
alt=""
title="Your Message In QR"
width="100"
height="100" />
Нет необходимости во втором вводе, я просто пытаюсь заставить qr-код автоматически генерироваться из текста, который извлекается из этой строки <input style="color: blue;" type="text" class="form-control input-message2" id="new-myInput" value="" readonly="" onclick="select()" input="message2">
, но, конечно, он не отображается в фрагменте кода, я использую Laravel 5
Комментарии:
1. У вас не должно быть
amp;amp;
строки URL; это должно быть простоеamp;
. Также вы должны передать текстовое содержимое (), прежде чем объединять его в URL.nric
encodeURIComponent()
2. Также вам не нужно использовать
.attr()
; было бы лучше использовать.prop()
для установки «src».3. @Pointy не могли бы вы помочь в этом случае, удалив необходимые вещи, пожалуйста
4. Также у вас
<input>
есть два значения «id».5. Могу ли я объединить эти идентификаторы в один с пробелом?
Ответ №1:
Несколько вещей:
-
В домене JavaScript нет необходимости экранировать
amp;
строку. Другими словами, вам не нужноamp;amp;
; это должно быть просто «amp;». -
Текст для отправки в службу QR должен быть закодирован для URL-адреса путем передачи его через
encodeURIComponent()
-
Ваш текст
<input>
имеет два значения «id», поэтому поиск jQuery его не найдет.
Ваша функция должна выглядеть следующим образом:
function generateBarCode() {
var nric = $('#text').val();
var url = 'https://api.qrserver.com/v1/create-qr-code/?data='
encodeURIComponent(nric)
'amp;size=50x50';
$('#barcode').prop('src', url);
}
Комментарии:
1. Я должен добавить, что иногда вам может потребоваться экранирование сущности HTML в строках JavaScript; это зависит от того, что будет делать строка. Это не один из таких случаев.
2. Спасибо, сейчас это работает, но я должен ввести данные, а затем щелкнуть по полю ввода, чтобы заставить его сгенерировать QR, поэтому я думаю, что теперь проблема в том, что message2 автоматически преобразуется в QR-код, но спасибо @pointy
3. Вы должны отключить ввод, потому что именно так вы разработали инструмент; ввод вызывает функцию при событии «размытие», которое происходит, когда поле теряет фокус.
4. Я вижу, я пытаюсь найти альтернативы или просто полностью удалить это и изменить его с помощью jquery для каждого введенного символа
5. Вы могли видеть, будет ли переключение на
oninput
вместоonblur
делать то, что вы хотите.