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 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
Jan 09 Javascript
JavaScript之IE的fireEvent方法详细解析
Nov 20 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 Javascript
jQuery实现文章图片弹出放大效果
Apr 06 jQuery
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
JavaScript中严格判断NaN的方法
Feb 16 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
vue使用nprogress实现进度条
Dec 09 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
vue实现移动端触屏拖拽功能
Aug 21 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长网址与短网址的实现方法
2017/10/13 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
vue实现路由切换改变title功能
2019/05/28 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
JS数组转字符串实现方法解析
2020/09/04 Javascript
Python基类函数的重载与调用实例分析
2015/01/12 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
对Python中内置异常层次结构详解
2018/10/18 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
群众路线批评与自我批评
2014/02/06 职场文书
继承权公证书
2014/04/09 职场文书
个人工作表现评价材料
2014/09/21 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL