JS模仿手机端九宫格登录功能实现代码


Posted in Javascript onApril 28, 2016

最近没有项目做,闲来无事写了一个小demo,特此分享到三水点靠木平台,供大家参考下,本文写的不好还请各位大侠见谅!

 功能及方法逻辑都注释在代码中。所以麻烦大家直接看代码。

 效果如下:

JS模仿手机端九宫格登录功能实现代码

 话不多说直接上代码:

 js部分:

 首先我们先画出两个九宫格,一个用于登录和首次设置滑动密码使用,另个用于再次设置滑动密码,用于与第一次输入的滑动密码进行对比,判断两次密码是否一致

 第一个九宫格

$("#gesturepwd").GesturePasswd({
backgroundColor: "#252736", //背景色
color: "#FFFFFF", //主要的控件颜色
roundRadii: 25, //大圆点的半径
pointRadii: 6, //大圆点被选中时显示的圆心的半径
space: 30, //大圆点之间的间隙
width: 240, //整个组件的宽度
height: 240, //整个组件的高度
lineColor: "#00aec7", //用户划出线条的颜色
zindex: 100 //整个组件的css z-index属性
});

在用同样的方式画出第二个九宫格

///加载第二个
function getur() {
$("#gesturepsa").GesturePasswd({
backgroundColor: "#252736", //背景色
color: "#FFFFFF", //主要的控件颜色
roundRadii: 25, //大圆点的半径
pointRadii: 6, //大圆点被选中时显示的圆心的半径
space: 30, //大圆点之间的间隙
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>

用户登录时通过业务逻辑层查询数据库,看客户是否设置九宫格密码,如果设置则调用add()方法,未设置则调用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("请设置手势密码!")
upup();
}
}
})
})
</script>

当用户已经设置过时我们进行如下操作(调用add()方法):

///设置过手势密码的用户
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 () {
//密码验证正确后的其他操作,打开新的页面等。。。
//alert("密码正确!")
$("#gesturepwd").hide();
$("#Indexs").show();;
}, 500); //延迟半秒以照顾视觉效果
}
else {
$("#gesturepwd").trigger("passwdWrong");
//密码验证错误后的其他操作。。。
}
});
}

这里我们可以获取客户在九宫格滑动的密码,将之取出来(即 passwd),我们将之与隐藏元素pass中的密码对比,如果一样这进入下一步,即登录成功。因为是dome所有密码我直接放在页面的元素中,在实际开发中不建议这样,最好在后台进行对比,如果要这样请加密之后操作。如果用户为第一次设置的话,我们调用upup方法

///没有设置过手势密码用户
function upup() {
///第一次设置
$("#gesturepwd").on("hasPasswd", function (e, passwd) {
$("#pass").text(passwd)
alert("请再次输入!");
getur();
$("#gesturepwd").hide();
$("#gesturepsa").show();
});
///第二次设置
Recursive();
}

这里我们获取到用户第一次滑动设置的密码将之赋给pass元素中。

然后调用Recursive方法

///递归(循环调用自己)
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();
}
});
}

我们将第二次设置的密码与第一次对比,如果一样我们就通过ajax将密码传到后台,进行密码保存操作。如果两次输入不一样我们就通过递归在将自己在调用一次进行对比,直至通过,当然你也可以设置3次不同重新设置什么的。

由于功能很简单就不进行详解,如果有不明白或者要参考源码的请留言,我会编写一个dome与大家分享。

Javascript 相关文章推荐
Prototype 工具函数 学习
Jul 23 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
Mar 21 Javascript
js调用webservice中的方法实现思路及代码
Feb 25 Javascript
javascript特殊用法示例介绍
Nov 29 Javascript
搭建Bootstrap离线文档的方法
Dec 02 Javascript
深入理解javascript的getTime()方法
Feb 16 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
Aug 31 Javascript
记React connect的几种写法(小结)
Sep 18 Javascript
vue-cli中安装方法(图文详细步骤)
Dec 12 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
May 14 Javascript
在vue中created、mounted等方法使用小结
Jul 21 Javascript
javascript全局自定义鼠标右键菜单
Dec 08 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
Apr 28 #Javascript
Bootstrap Chart组件使用教程
Apr 28 #Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
Apr 28 #Javascript
location.hash保存页面状态的技巧
Apr 28 #Javascript
字符串反转_JavaScript
Apr 28 #Javascript
使用 stylelint检查CSS_StyleLint
Apr 28 #Javascript
基于BootStarp的Dailog
Apr 28 #Javascript
You might like
php生成随机数或者字符串的代码
2008/09/05 PHP
php使用curl访问https示例分享
2014/01/17 PHP
PHP内核探索:变量概述
2014/01/30 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
Convert Seconds To Hours
2007/06/16 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
python得到电脑的开机时间方法
2018/10/15 Python
python cumsum函数的具体使用
2019/07/29 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
2013年入党人员的自我鉴定
2013/10/25 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书