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 相关文章推荐
Javascript实现的分页函数
Feb 07 Javascript
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 Javascript
Jquery阻止事件冒泡 event.stopPropagation
Dec 11 Javascript
面向对象的Javascript之二(接口实现介绍)
Jan 27 Javascript
JavaScript闭包详解
Feb 02 Javascript
JavaScript中指定函数名称的相关方法
Jun 04 Javascript
javascript中FOREACH数组方法使用示例
Mar 01 Javascript
JS实现图片局部放大或缩小的方法
Aug 20 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
详解Vue 方法与事件处理器
Jun 20 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
Dec 07 Javascript
vue store之状态管理模式的详细介绍
Jun 13 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
Python通过poll实现异步IO的方法
2015/06/04 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
Python timeit模块原理及使用方法
2020/10/10 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
求职信怎么写
2014/05/23 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
工作年限证明模板
2014/11/01 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫