jquery实现签名功能
时间:2021-07-30
本文章向大家介绍jquery实现签名功能,主要包括jquery实现签名功能使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
a.html
引入jQuery.js
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>健康生活</title> 7 <meta name="viewport" 8 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 9 </head> 10 <style type="text/css"> 11 a { 12 text-decoration: none; 13 } 14 15 a:hover { 16 text-decoration: none; 17 } 18 19 #box { 20 width: 100%; 21 height: 400px; 22 border: 1px solid #eaeaea; 23 } 24 25 canvas { 26 height: 400px !important; 27 } 28 29 .abspan { 30 color: #ffffff; 31 display: block; 32 width: 100px; 33 font-size: 16px; 34 text-align: center; 35 line-height: 40px; 36 background: dodgerblue; 37 margin-bottom: 10px; 38 } 39 </style> 40 41 42 <body> 43 <div style="margin: 12px;"> 44 <div class="form-group"> 45 <label class="col-sm-3 control-label">本人姓名确认</label> 46 <div class="col-sm-8"> 47 <div id="box"> 48 </div> 49 <span class="abspan" id="su">确认</span> 50 <span class="abspan" id="re">重置</span> 51 <img src="" alt="" id="image"> 52 </div> 53 </div> 54 <div class="form-group"> 55 <div class="col-sm-8 col-sm-offset-3"> 56 <a id="save" class="btn btn-primary" οnclick="javascript:save()">提交</a>     57 </div> 58 </div> 59 </form> 60 61 </div> 62 63 </body> 64 <script type="text/javascript" src="./js/jquery-2.1.1.min.js"></script> 65 <script src="https://cdn.bootcdn.net/ajax/libs/jSignature/2.1.3/flashcanvas.js"></script> 66 <script src="https://cdn.bootcdn.net/ajax/libs/jSignature/2.1.3/jSignature.min.js"></script> 67 <script> 68 $(function () { 69 $("#box").jSignature(); //初始化画板,初始化之后就可以进行操作 70 }); 71 72 function save() { 73 //先将图片保存到服务器,在把其他表单数据提交到服务器(具体如何关联取决业务) 74 saveImage(); 75 saveForm(); 76 } 77 //点击事件为获取base64数据,生成图片 78 document.getElementById("su").onclick = function () { 79 //getData:获取数据 80 //reset:复位/重置 81 // 获取签名的“base64”数据对 82 var datapair = $("#box").jSignature("getData", "image"); 83 //此处打印的是完整的base64转码,可以复制后去在线转码测试一下是否正常 84 console.log('data:' + datapair[0] + "," + datapair[1]) 85 //将图片展示出来 86 $("#image").attr('src', 'data:' + datapair[0] + "," + datapair[1]); 87 } 88 //生成图片之后我们就可以进行相应的操作 89 90 //点击事件为重置画板 91 document.getElementById("re").onclick = function () { 92 $("#box").jSignature("reset"); 93 $("#image").attr('src', ''); 94 } 95 var url = ''; //设置你们的url 96 //保存整个表单在此之前已经将图片上传到服务器了 97 function saveForm() { 98 $.ajax({ 99 cache: true, 100 type: "POST", 101 url: url, 102 data: $('#form').serialize(), // 你的formid 103 async: false, 104 error: function (request) { 105 alert("网络超时"); 106 }, 107 success: function (data) { 108 console.log(data) 109 } 110 }); 111 } 112 //重点来了,该方法将Base64格式转换成流格式 113 function base64toFile(dataurl, filename) { 114 let arr = dataurl.split(',') 115 let mime = arr[0].match(/:(.*?);/)[1] 116 let suffix = mime.split('/')[1] 117 let bstr = atob(arr[1]) 118 let n = bstr.length 119 let u8arr = new Uint8Array(n) 120 while (n--) { 121 u8arr[n] = bstr.charCodeAt(n) 122 } 123 return new File([u8arr], `${filename}.${suffix}`, { 124 type: mime 125 }) 126 } 127 128 function saveImage() { 129 var url = ''; //设置你们的url 130 var datapair = $("#box").jSignature("getData", "image"); //将canvas里面的数据转换成base64数组 131 var imgBase64 = 'data:' + datapair[0] + "," + datapair[1]; //封装成正确的base64 132 var file = base64toFile(imgBase64, 'file'); //base64转换成流文件,可以打印出来看下 133 let formData = new FormData() //封装成formData格式 134 formData.append('type', 97); 135 formData.append('file', file) 136 $.ajax({ 137 contentType: false, //不可少 138 processData: false, //不可少 139 type: "POST", 140 url: url, 141 data: formData, 142 async: false, 143 error: function (request) { 144 alert("网络超时"); 145 }, 146 success: function (data) { 147 console.log(data) 148 } 149 }); 150 } 151 </script> 152 153 </html>
文件地址链接:https://gitee.com/devil_mask/j-query-signature
原文地址:https://www.cnblogs.com/langmohua/p/15078976.html
- 修改Visual Studio类模板添加版权注释信息
- Oracle 11g 安装教程
- ASP.NET MVC学习笔记07数据表和模型添加新字段
- 以太坊·电影院场景区块链应用探索
- 最全爬虫攻略:微博、APP、公众号一个不能少!
- 注册中心 Eureka 源码解析 —— Eureka-Client 初始化(一)之 EurekaInstanceConfig
- 无论人工智能发展到什么地步,都离不开这6段代码
- Dubbo源码解析 —— 逻辑层设计之服务降级
- 【死磕Java并发】-----J.U.C之Condition
- 数据库中间件 MyCAT 源码分析 —— 【单库单表】查询
- 数据库中间件 MyCAT源码分析:【单库单表】插入
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 分布式事务 TCC-Transaction 源码解析 —— 事务存储器
- 注册中心 Eureka 源码解析 —— 调试环境搭建
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法