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 相关文章推荐
jQuery $.each的用法说明
Mar 22 Javascript
JavaScript 笔记二 Array和Date对象方法
May 22 Javascript
juqery 学习之六 CSS--css、位置、宽高
Feb 11 Javascript
jquery中ajax学习笔记4
Oct 16 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
Feb 16 Javascript
常规表格多表头查询示例
Feb 21 Javascript
Bootstrap表单布局
Jul 19 Javascript
vue双向绑定简要分析
Mar 23 Javascript
基于Vue实现图片在指定区域内移动的思路详解
Nov 11 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
jquery使用echarts实现有向图可视化功能示例
Nov 25 jQuery
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无敌近乎加密方式!
2010/07/17 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
十大使用PHP框架的理由
2015/09/26 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
python中pycurl库的用法实例
2014/09/30 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
学习python可以干什么
2019/02/26 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
2015年社区文体活动总结
2015/03/25 职场文书
我是特种兵观后感
2015/06/11 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
python单向链表实例详解
2022/05/25 Python