Использование этого кода для вставки блока подписи в форму. При использовании стандартной формы HTML это прекрасно работает (ie, вызов не ajax, но отправка формы по URL).
Но то, что я сейчас пытаюсь сделать, это иметь холст в модальном элементе bootstrap на странице, который изначально скрыт. Затем я устанавливаю модальное отображение и запускаю холст. Затем - когда форма (включая заполненную подпись) отправлена - данные формы сохраняются с помощью ajax
(jQuery).
Моя проблема заключается в том, что я продолжаю получать ошибки, связанные с canvas / signaturePad, а не определяется - signaturePad is not defined
при запуске ajax сохранить.
Это код подписи, включенный в bootstrap modal
:
<div id="signature-pad" class="signature-pad">
<div class="signature-pad--body">
<canvas></canvas>
</div>
</div>
Это jQuery код для запуска модального режима (который работает отлично - я могу подписать на холсте):
$("#ModalActionCost").modal('show');
var wrapper = document.getElementById("signature-pad");
var canvas = wrapper.querySelector("canvas");
var signaturePad = new SignaturePad(canvas, {
backgroundColor: 'rgb(255, 255, 255)'
});
И этот код при сохранении содержимого формы:
$("#trigger").click(function(e){
var dataURL = signaturePad.toDataURL(); <-- this is the line I get the error on.
$("#hiddenSignature").val(signaturePad.toDataURL("image/png").replace("data:image/png;base64,", ""));
var hiddenSignature = $("#hiddenSignature").val();
// ajax call follows.
......
});
Опять получаю ошибку: signaturePad is not defined
Чтобы попытаться обойти эту ошибку, я подумал, что мне нужно снова запустить холст (вызов var signaturePad...
) при сохранении с помощью ajax - это действительно сработало, и значение BLOB-объекта pad было отправлено, - но, конечно, я получаю пустой холст, видимый как он был стерт при повторном определении.
Я собрал упрощенную версию потока jsfiddle - которая вроде бы работает введите здесь описание ссылки , но я не могу понять, почему моя версия выше не работает.