网站首页 > 技术文章 正文
最近公司项目需求,客户可以直接在textarea可以输入签名,经过研究,采用Canvas解决,废话少说,直接上代码,样式可根据设计图自行修改。
仅此个人笔记,分享学习 。有不足之处,望大佬指点学习,共勉!!!
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
</head>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.from_list{
width: 96%;
margin: 0 2%;
color: #353535;
line-height: 2rem;
background: #FFFFFF;
border-top: 1px solid #EEEEEE;
border-bottom: 1px solid #EEEEEE;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
justify-content: space-between;
-webkit-justify-content: space-between;
}
#reset_btn {
width: 4rem;
color: #ffffff;
font-size: 0.7rem;
text-align: center;
line-height: 1.5rem;
background: #2F7DCD;
border-radius: 0.15rem;
-webkit-border-radius: 0.15rem;
}
.sign_box {
margin-top: 1rem;
padding: 0 0.75rem 0.5rem 1rem;
background: #ffffff;
}
.sign_content {
border: 1px solid #CCCCCC;
}
#canvas_box {
width: 100%;
height: 10rem;
}
canvas {
height: 10rem !important;
}
.submit_box {
width: 92%;
margin: 0 4%;
height: 2.4rem;
line-height: 2.4rem;
background: #2F7DCD;
border-radius: 0.2rem;
color: white;
text-align: center;
</style>
<body>
<div class="from_list _bor_bottom0"><div>商户手动签字 <var>*</var></div><div id="reset_btn">重写</div></div>
<div class="sign_box">
<div class="sign_content">
<div id="canvas_box"></div>
</div>
</div>
<div class="submit_box" id="submit_btn">提交</div>
</body>
<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/jSignature.min.js"></script>
<script type="text/javascript" src="./js/flashcanvas.js"></script>
<script type="text/javascript">
// *********电子签名功能*********
let canvas_box = $("#canvas_box"); // 获取canvas标签
canvas_box.jSignature(); // 初始化签名画板,初始化之后就可以进行操作
let signImgSrc = ""; // 提交后台的图片路径
// 监听手动签名滑动开始、移动、释放时,执行输入框失去焦点的功能,解决签名时触发软键盘的问题
$("#canvas_box").on("touchstart mousemove touchend",function () {
// console.log("走签名-mousemove事件");
$("input,textarea").blur();
});
// 重置按钮,生成图片之后,可重置画板,并清空图片
$("#reset_btn").on("click",function (e) {
canvas_box.jSignature("reset");
signImgSrc = "";
e.preventDefault();
});
//提交签名
$("#submit_btn").on("click",function (e) {
// 获取签名长度
let signLen = canvas_box.jSignature("getData","native").length;
//签名判断,长度为0,提示客户签名
if(signLen==0){
alert("请输入签名");
}else{
//当有商户签字时,赋值签字的base64码
let datapair = canvas_box.jSignature("getData","image"); // 获取签名的“base64”数据
console.log("datapair",datapair);
// 拼接完整的base64转码,根绝接口说明,传递。
signImgSrc = 'data:' + datapair[0] + "," + datapair[1];
console.log('确认后的base64路径=',signImgSrc);
}
})
</script>
</html>
yy
源码地址:https://github.com/Skingsking/signature
猜你喜欢
- 2024-09-10 Python奇淫技巧之自动登录哔哩哔哩(解决滑块验证)
- 2024-09-10 html转image 保存到zip(html保存成图片)
- 2024-09-10 前端上传图片被旋转的处理方案(nba常规赛录像高清回放)
- 2024-09-10 Day 3 学习Canvas这一篇文章就够了
- 2024-09-10 JavaScript实现浏览器本地的图像移动、大小调整和裁剪
- 2024-09-10 微信内置浏览器动态生成二维码并长按识别
- 2024-09-10 Python奇淫技巧之自动登录哔哩哔哩
- 2024-09-10 JSPDF + html2canvas A4分页截断(html做分页)
- 2024-09-10 vue手把手教学~搭建web聊天室(vue简单聊天室)
- 2024-09-10 前端:从零实现一款可视化图片编辑器
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 526℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 492℃MySQL service启动脚本浅析(r12笔记第59天)
- 472℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 469℃启用MySQL查询缓存(mysql8.0查询缓存)
- 449℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 429℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 426℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)