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 相关文章推荐
判断iframe是否加载完成的完美方法
Jan 07 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
Mar 23 Javascript
js prototype截取字符串函数
Apr 01 Javascript
JS随机漂浮广告代码具体实例
Nov 19 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
Sep 09 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
Dec 10 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
Jun 08 Javascript
Bootstrap笔记—折叠实例代码
Mar 13 Javascript
AngularJS中$http的交互问题
Mar 29 Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 Javascript
vue实现点击展开点击收起效果
Apr 27 Javascript
React Router V4使用指南(精讲)
Sep 17 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
SVG实现时钟效果
2018/07/17 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
Mac 上切换Python多版本
2017/06/17 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
python 实现线程之间的通信示例
2020/02/14 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
教职工代表大会主持词
2014/04/01 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
教师旷工检讨书
2015/08/15 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
微信小程序调用python模型
2022/04/21 Python