JS模仿手機(jī)端九宮格登錄功能實(shí)現(xiàn)代碼
最近沒有項(xiàng)目做,閑來無事寫了一個小demo,特此分享到腳本之家平臺,供大家參考下,本文寫的不好還請各位大俠見諒!
功能及方法邏輯都注釋在代碼中。所以麻煩大家直接看代碼。
效果如下:
話不多說直接上代碼:
js部分:
首先我們先畫出兩個九宮格,一個用于登錄和首次設(shè)置滑動密碼使用,另個用于再次設(shè)置滑動密碼,用于與第一次輸入的滑動密碼進(jìn)行對比,判斷兩次密碼是否一致
第一個九宮格
$("#gesturepwd").GesturePasswd({ backgroundColor: "#252736", //背景色 color: "#FFFFFF", //主要的控件顏色 roundRadii: 25, //大圓點(diǎn)的半徑 pointRadii: 6, //大圓點(diǎn)被選中時(shí)顯示的圓心的半徑 space: 30, //大圓點(diǎn)之間的間隙 width: 240, //整個組件的寬度 height: 240, //整個組件的高度 lineColor: "#00aec7", //用戶劃出線條的顏色 zindex: 100 //整個組件的css z-index屬性 });
在用同樣的方式畫出第二個九宮格
///加載第二個 function getur() { $("#gesturepsa").GesturePasswd({ backgroundColor: "#252736", //背景色 color: "#FFFFFF", //主要的控件顏色 roundRadii: 25, //大圓點(diǎn)的半徑 pointRadii: 6, //大圓點(diǎn)被選中時(shí)顯示的圓心的半徑 space: 30, //大圓點(diǎn)之間的間隙 width: 240, //整個組件的寬度 height: 240, //整個組件的高度 lineColor: "#00aec7", //用戶劃出線條的顏色 zindex: 100 //整個組件的css z-index屬性 }); }
html部分:
<div> <center><br><br> <div id="gesturepwd"></div> <div id="gesturepsa" style="display:none"></div> </center> </div>
用戶登錄時(shí)通過業(yè)務(wù)邏輯層查詢數(shù)據(jù)庫,看客戶是否設(shè)置九宮格密碼,如果設(shè)置則調(diào)用add()方法,未設(shè)置則調(diào)用upup()方法。
<script> $(function () { var urlinfo = window.location.href; var UserName = urlinfo.split("_")[1]; $.ajax({ type: "POST", url: "../../Home/Details", dataType: 'json', anyc: false, data: { UserName: UserName }, success: function (data) { if (data.msg == "True") { $("#pass").text(data.pass); alert("請輸入手勢密碼!") add(); } else { alert("請?jiān)O(shè)置手勢密碼!") upup(); } } }) }) </script>
當(dāng)用戶已經(jīng)設(shè)置過時(shí)我們進(jìn)行如下操作(調(diào)用add()方法):
///設(shè)置過手勢密碼的用戶 function add() { $("#gesturepwd").on("hasPasswd", function (e, passwd) { var result; if (passwd == $("#pass").text()) { result = true; } else { result = false; } if (result == true) { $("#gesturepwd").trigger("passwdRight"); setTimeout(function () { //密碼驗(yàn)證正確后的其他操作,打開新的頁面等。。。 //alert("密碼正確!") $("#gesturepwd").hide(); $("#Indexs").show();; }, 500); //延遲半秒以照顧視覺效果 } else { $("#gesturepwd").trigger("passwdWrong"); //密碼驗(yàn)證錯誤后的其他操作。。。 } }); }
這里我們可以獲取客戶在九宮格滑動的密碼,將之取出來(即 passwd),我們將之與隱藏元素pass中的密碼對比,如果一樣這進(jìn)入下一步,即登錄成功。因?yàn)槭莇ome所有密碼我直接放在頁面的元素中,在實(shí)際開發(fā)中不建議這樣,最好在后臺進(jìn)行對比,如果要這樣請加密之后操作。如果用戶為第一次設(shè)置的話,我們調(diào)用upup方法
///沒有設(shè)置過手勢密碼用戶 function upup() { ///第一次設(shè)置 $("#gesturepwd").on("hasPasswd", function (e, passwd) { $("#pass").text(passwd) alert("請?jiān)俅屋斎?"); getur(); $("#gesturepwd").hide(); $("#gesturepsa").show(); }); ///第二次設(shè)置 Recursive(); }
這里我們獲取到用戶第一次滑動設(shè)置的密碼將之賦給pass元素中。
然后調(diào)用Recursive方法
///遞歸(循環(huán)調(diào)用自己) function Recursive() { $("#gesturepsa").on("hasPasswd", function (e, passwd) { var urlinfo = window.location.href; var UserName = urlinfo.split("_")[1]; if (passwd == $("#pass").text()) { $.ajax({ type: "POST", url: "../../Home/GrtturePassword", dataType: 'json', anyc: false, data: { GesturePassword: passwd, UserName: UserName }, success: function (data) { alert(data); $("#gesturepsa").hide();; $("#Indexs").show();; } }) } else { $("#gesturepsa").trigger("passwdWrong"); alert("兩次密碼不一致,請重新輸入!"); $("#gesturepsa").remove(); $("#gesturepwd").after("<div id='gesturepsa'></div>") getur(); Recursive(); } }); }
我們將第二次設(shè)置的密碼與第一次對比,如果一樣我們就通過ajax將密碼傳到后臺,進(jìn)行密碼保存操作。如果兩次輸入不一樣我們就通過遞歸在將自己在調(diào)用一次進(jìn)行對比,直至通過,當(dāng)然你也可以設(shè)置3次不同重新設(shè)置什么的。
由于功能很簡單就不進(jìn)行詳解,如果有不明白或者要參考源碼的請留言,我會編寫一個dome與大家分享。
相關(guān)文章
使用Bootstrap框架制作查詢頁面的界面實(shí)例代碼
這篇文章主要介紹了使用Bootstrap框架制作查詢頁面界面的效果,本文以職業(yè)技能考證分?jǐn)?shù)查詢界面為例,通過實(shí)例代碼給大家詳細(xì)介紹,需要的朋友可以參考下2016-05-05JS實(shí)現(xiàn)下拉菜單列表與登錄注冊彈窗效果
下面小編就為大家?guī)硪黄狫S實(shí)現(xiàn)下拉菜單列表與登錄注冊彈窗效果。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08教你30秒發(fā)布一個TypeScript包到NPM的方法步驟
這篇文章主要介紹了教你30秒發(fā)布一個TypeScript包到NPM的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07JavaScript defineProperty如何實(shí)現(xiàn)屬性劫持
雙向數(shù)據(jù)綁定的核心方法,主要是做數(shù)據(jù)劫持操作(監(jiān)控?cái)?shù)據(jù)變化),下面這篇文章主要給大家介紹了關(guān)于JavaScript defineProperty如何實(shí)現(xiàn)屬性劫持的相關(guān)資料,需要的朋友可以參考下2021-07-07使用Javascript實(shí)現(xiàn)復(fù)制粘貼功能的示例代碼
本篇文章記錄如何通過js代碼實(shí)現(xiàn)復(fù)制內(nèi)容到剪切板,之后可以粘貼到需要的地方的功能,文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-09-09