javascript - 无法检查签名板是否为空
问题描述
我的签名板有问题。当我按下提交按钮而不在键盘上签名时,我会抛出一个错误,但我收到了这个错误:
未捕获的 ReferenceError:未定义签名板
这是我的代码:
jQuery(document).ready(function () {
var signaturePadCanvas = document.querySelector('#signature-pad-canvas');
var parentWidth = jQuery(signaturePadCanvas).parent().outerWidth();
signaturePadCanvas.setAttribute("width", parentWidth);
var signaturePad = new SignaturePad(signaturePadCanvas);
});
function submit() {
if (signaturePad.isEmpty()) {
console.log("Empty!");
}
}
.signature-pad-canvas-wrapper {
margin: 15px 0 0;
border: 1px solid #cbcbcb;
border-radius: 3px;
overflow: hidden;
position: relative;
}
.signature-pad-canvas-wrapper::after {
content: 'Name';
border-top: 1px solid #cbcbcb;
color: #cbcbcb;
width: 100%;
margin: 0 15px;
display: inline-flex;
position: absolute;
bottom: 10px;
font-size: 13px;
z-index: -1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js"></script>
<div class="signature-pad-canvas-wrapper">
<canvas id="signature-pad-canvas"></canvas>
<button onClick="submit()">Submit</button>
</div>
有任何想法吗?
解决方案
您的signaturePad
变量超出了submit()
函数的范围,在全局范围内声明它然后使用它。
var signaturePad;
jQuery(document).ready(function () {
var signaturePadCanvas = document.querySelector('#signature-pad-canvas');
var parentWidth = jQuery(signaturePadCanvas).parent().outerWidth();
signaturePadCanvas.setAttribute("width", parentWidth);
signaturePad = new SignaturePad(signaturePadCanvas);
});
function submit() {
if (signaturePad.isEmpty()) {
console.log("Empty!");
}
}
.signature-pad-canvas-wrapper {
margin: 15px 0 0;
border: 1px solid #cbcbcb;
border-radius: 3px;
overflow: hidden;
position: relative;
}
.signature-pad-canvas-wrapper::after {
content: 'Name';
border-top: 1px solid #cbcbcb;
color: #cbcbcb;
width: 100%;
margin: 0 15px;
display: inline-flex;
position: absolute;
bottom: 10px;
font-size: 13px;
z-index: -1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js"></script>
<div class="signature-pad-canvas-wrapper">
<canvas id="signature-pad-canvas"></canvas>
<button onClick="submit()">Submit</button>
</div>
推荐阅读
- php - 在 stderr 中发送的 FastCGI:“主脚本未知”- URL 工作正常,没有提及使用 nginx 反向代理的 index.php
- python - NS3 使用 python 绑定创建简单的拓扑
- javascript - 如何将对象数组转换为具有键和值作为数组的对象
- vue.js - PrimeVue数据表中的过滤数组?
- python-3.x - 如何从延迟加载过程中下载图像
- reactjs - React 路由器仅在转换完成时才开始显示页面内容
- vue.js - PrimeFlex 边距在 Vue3 应用程序中不起作用
- kotlin - 在 kotlin 中声明全局变量默认为属性值
- transactions - 如何在可靠的块之间为地址指望链交易
- java - Selenium & Java - 指定的代理被忽略