基于Jq的手写插件

<!DOCTYPE html>
<html lang="en">

	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<script src="../../xsloader.js" data-xsloader-conf2="./xsloader.config" async="async" type="text/javascript" charset="utf-8"></script>
		<script src="libs/modernizr.js"></script><!--引入文件-->
		<style>
			input {
				padding: .5em;
				margin: .5em;
			}
			#signatureparent {
				color: #000;
				background-color: #fff;
				padding: 10px;
			}
			
			#signature {
				border: 1px dotted #3eaed2;
				background-color: #ececec;
				width: 100%;
				
			}
			
			#signResult {
				width: 300px;
				height: 300px;
			}
		</style>
	</head>

	<body style="background-color: #fff;">
		<div id="content" style="width: 100%;padding-top: 15px;">
			<center style="font-size: 1.2em;">请在虚线框内签名,完毕后点击 保存 按钮。</center>
			<div id="signatureparent">
				<div id="signature"></div> //这是要显示写字板的容器
			</div>
			<div style="text-align: center;">
				<input type="button" name="btnReset" id="btnReset" value="重写" />
				<input type="submit" class="" name="btnSave" id="btnSave" value="保存签名" />
			</div>
		</div>
		<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script><!--引入Jq文件,必须在noconflict.js文件之前引入--> 
          <script src="libs/jSignature.min.noconflict.js"></script> </body> </html>

  以下是js文件:

    var that = this;
	var option = {
		isRevoke: false,//是否有撤销按钮
		color: "red"  //画笔颜色
	}
	var strokesCount = 0; //笔画数,为了记录是否有签名,如果为0,表示没有签名就提交,拒绝提交
	var $sigdiv = handSign(option);

	function handSign(obj) { //isRevoke:是否有撤销按钮;color:画笔颜色

		var $signadiv = $(signature).jSignature({
				'UndoButton': obj.isRevoke,
				"color": obj.color
			}), //实例化一个画板
			pubsubprefix = 'jSignature.demo.'
		$signadiv.on('change', function(e) {
			strokesCount++; //监听画板,记录笔画数
		})
		return $signadiv;
		/*$(signature).jSignature({option})参数设置
		 * option = {
			width : ratio     定义画布的宽度。数值没有%或px
			height : ratio   定义画布的高度。数值没有%或px
			sizeRatio: 4 // only used when height = ratio
			color : #000      定义了中风在画布上的颜色。接受任何颜色的十六进制值
			background-color: #fff   定义了画布的背景颜色。接受任何颜色的十六进制值。
			decor-color: #eee
			lineWidth : 0       定义的厚度。接受任何积极的数值
			minFatFingerCompensation : -10
			showUndoButton: false
			readOnly: false
			data: []
			signatureLine: false
			}*/
	}
	$("#btnSave").on("click", function() {
		if(strokesCount > 0) {
			//可选格式:native,image,base30,image/jsignature;base30,svg,image/svg+xml,svgbase64,image/svg+xml;base64
			var basedata = $sigdiv.jSignature('getData', "image"); //获取图片数据,前面不加入data: 直接存入数据库,读取的时候,可以再加
			sdk.xsRequest({  //发送异步请求,将图片进行上传,这里使用的是公司分装的,用原生的ajax自行百度
				method: "post",
				url: lconfig.fromPath("HandSign/saveHandSignImage"),
				params: {
					"jsdata": basedata[1],
					"vid": "abd",
					"vtid": "abcd"
				}
			}).then(function(json) {
				return json;
			})
		} else {
			sdk.showToast("请签名后再保存")  //监听是否有写过,如果没有写过则不予以上传,这里使用公司的弹窗sdk,
		}

	});
	$("#btnReset").on("click", function() {
		$sigdiv.jSignature('reset'); //重置
		strokesCount = 0;//重置过后将笔画数也清楚0
	});

  

posted @ 2019-02-19 13:16  CoderOu  阅读(549)  评论(0编辑  收藏  举报