JavaScript實現(xiàn)移動端簽字功能
更新時間:2021年10月15日 11:54:03 作者:、蒙昧
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)移動端簽字功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了JavaScript實現(xiàn)移動端簽字功能的具體代碼,供大家參考,具體內(nèi)容如下
一、html部分
<div class="mui-content-padded"> <div class="mui-inline"><font style="font-family: '微軟雅黑';font-size: 1.2rem;">驗收人簽字:</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。
二、頁面初始化,添加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(); // 阻止瀏覽器默認事件,重要
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(); // 阻止瀏覽器默認事件,重要
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(); // 阻止瀏覽器默認事件,防止手寫的時候拖動屏幕,重要
mousePressed = false;
}
}, false);
// 鼠標
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);
}
效果

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
JS使用定時器與事件監(jiān)聽實現(xiàn)輪播圖切換功能
現(xiàn)在很多網(wǎng)站都有輪播圖,下面這篇文章主要給大家介紹了關(guān)于JS如何使用定時器與事件監(jiān)聽實現(xiàn)輪播圖切換功能的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-11-11
Input文本框隨著輸入內(nèi)容多少自動延伸的實現(xiàn)
下面小編就為大家?guī)硪黄狪nput文本框隨著輸入內(nèi)容多少自動延伸的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
JavaScript中entries()和Object.values()方法的使用
本文詳細介紹了JavaScript中的兩個實用方法,entries()和Object.values(),下面就來介紹一下兩個方法在遍歷對象和數(shù)組時的應(yīng)用,感興趣的可以了解一下2024-12-12
JS題解leetcode去掉最低工資和最高工資后的工資平均值
這篇文章主要為大家介紹了JS題解leetcode去掉最低工資和最高工資后的工資平均值,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
一個檢測表單數(shù)據(jù)的JavaScript實例
這篇文章主要介紹了一個檢測表單數(shù)據(jù)的JavaScript實例,很簡單,很實用,比較適合初學者2014-10-10

