JavaScript實(shí)現(xiàn)移動(dòng)端簽字功能
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)移動(dòng)端簽字功能的具體代碼,供大家參考,具體內(nèi)容如下
一、html部分
<div class="mui-content-padded"> <div class="mui-inline"><font style="font-family: '微軟雅黑';font-size: 1.2rem;">驗(yàn)收人簽字:</font></div> </div> <div class="mui-content-canvasDiv" style="overflow: hidden;"> <canvas id="myCanvas" width="660" height="360" style="border:1px solid #f2f2f2;"></canvas> <div class="saveimgs" id="saveImgDiv"></div> </div>
myCanvas是簽字的div,saveImgDiv是保存后回顯的div。
二、頁(yè)面初始化,添加div簽字功能
InitThis();
var mousePressed = false;
var lastX, lastY;
var ctx = document.getElementById('myCanvas').getContext("2d");
var c = document.getElementById("myCanvas");
var selected1, selected2;
function InitThis() {
// 觸摸屏
c.addEventListener('touchstart', function(event) {
console.log(1)
if(event.targetTouches.length == 1) {
event.preventDefault(); // 阻止瀏覽器默認(rèn)事件,重要
mousePressed = true;
Draw(event.touches[0].pageX - this.offsetLeft, event.touches[0].pageY - this.offsetTop, false);
}
}, false);
c.addEventListener('touchmove', function(event) {
console.log(2)
if(event.targetTouches.length == 1) {
event.preventDefault(); // 阻止瀏覽器默認(rèn)事件,重要
if(mousePressed) {
Draw(event.touches[0].pageX - this.offsetLeft, event.touches[0].pageY - this.offsetTop, true);
}
}
}, false);
c.addEventListener('touchend', function(event) {
console.log(3)
if(event.targetTouches.length == 1) {
event.preventDefault(); // 阻止瀏覽器默認(rèn)事件,防止手寫的時(shí)候拖動(dòng)屏幕,重要
mousePressed = false;
}
}, false);
// 鼠標(biāo)
c.onmousedown = function(event) {
mousePressed = true;
Draw(event.pageX - this.offsetLeft, event.pageY - this.offsetTop, false);
};
c.onmousemove = function(event) {
if(mousePressed) {
Draw(event.pageX - this.offsetLeft, event.pageY - this.offsetTop, true);
}
};
c.onmouseup = function(event) {
mousePressed = false;
};
}
function Draw(x, y, isDown) {
if(isDown) {
ctx.beginPath();
ctx.strokeStyle = selected2;
ctx.lineWidth = selected1;
ctx.lineJoin = "round";
ctx.moveTo(lastX, lastY);
ctx.lineTo(x, y);
ctx.closePath();
ctx.stroke();
}
lastX = x;
lastY = y;
}
三、獲取圖片路徑放到saveImgDiv里,簽字回顯邏輯
var file = "http://10.1.31.173:8097/upload/" + iv[0].zjqm + "?v=" + new Date().getTime();
$("#saveImgDiv").append('<img src="'+ file + '" style="background:white" width="660" height="360">');
四、保存用戶簽名,可以放在保存提交成功的回調(diào)里
var saveimgs = document.getElementsByClassName("saveimgs")[0];
//保存簽名圖片
var image = c.toDataURL("image/png");
var ctximg = document.createElement("span");
ctximg.innerHTML = "<img src='" + image + "' alt='from canvas'/>";
if(saveimgs.getElementsByTagName('span').length >= 1) {
var span_old = saveimgs.getElementsByTagName("span")[0];
saveimgs.replaceChild(ctximg,span_old)
} else {
saveimgs.appendChild(ctximg);
}
效果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于JavaScript實(shí)現(xiàn)自定義滾動(dòng)條
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)自定義滾動(dòng)條,可以直接使用的滾動(dòng)條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
JavaScript實(shí)現(xiàn)Flash炫光波動(dòng)特效
JavaScript寫的炫光波動(dòng)效果,看到一些Flash效果不錯(cuò),用JS也模擬一下,還有很多不完善的地方,給各位參考參考。2015-05-05
js文本框輸入點(diǎn)回車觸發(fā)確定兼容IE、FF等
js文本框輸入點(diǎn)回車觸發(fā)確定兼容IE、FF等,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-11-11
Javascript檢查圖片大小不要讓大圖片撐破頁(yè)面
用Javascript判斷圖片大小,其實(shí)只要寫一個(gè)簡(jiǎn)單的函數(shù)就可以了,使用其他語(yǔ)言進(jìn)行判斷,過(guò)程比較復(fù)雜,用 Javascript 判斷輕松搞定2014-11-11
javascript實(shí)現(xiàn)搶購(gòu)倒計(jì)時(shí)程序
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)搶購(gòu)倒計(jì)時(shí)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
JavaScript利用Canvas實(shí)現(xiàn)粒子動(dòng)畫倒計(jì)時(shí)
粒子動(dòng)畫就是頁(yè)面上通過(guò)發(fā)射許多微小粒子來(lái)表示不規(guī)則模糊物體。本文將利用canvas實(shí)現(xiàn)酷炫的粒子動(dòng)畫倒計(jì)時(shí),感興趣的小伙伴可以嘗試一下2022-12-12
教你如何自定義百度分享插件以及bshare分享插件的分享按鈕
在項(xiàng)目中我們常用到百度分享插件或者bshare分享插件,雖然官方都有自定義按鈕的功能,但是畢竟還是只有少數(shù)幾種,我們?nèi)绾蝸?lái)制作有自己特色的分享按鈕呢?2014-06-06
JavaScript 計(jì)算笛卡爾積實(shí)例詳解
這篇文章主要介紹了JavaScript 計(jì)算笛卡爾積實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼,需要的朋友可以參考下2016-12-12

