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 相关文章推荐
firefox和IE系列的相关区别整理 以备后用
Dec 28 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
Jul 17 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
Jun 04 Javascript
百度地图api如何使用
Aug 03 Javascript
jQuery将表单序列化成一个Object对象的实例
Nov 29 Javascript
原生JS+Canvas实现五子棋游戏
May 28 Javascript
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 Javascript
带你使用webpack快速构建web项目的方法
Nov 12 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
DC动漫人物排行
2020/03/03 欧美动漫
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
laravel学习教程之存取器
2016/07/30 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
python生成n个元素的全组合方法
2018/11/13 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
10个示例带你掌握python中的元组
2020/11/23 Python
公务员职业生涯规划书范文  
2014/01/19 职场文书
个人现实表现材料
2014/02/04 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
安全生产培训心得体会
2016/01/18 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
详解python的异常捕获
2022/03/03 Python