JS/jQ实现免费获取手机验证码倒计时效果


Posted in Javascript onJune 13, 2016

最近做了一个项目,其中有项目需求涉及到手机号验证码,就是当用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个实现代码。

JS/jQ实现免费获取手机验证码倒计时效果

如何获取手机验证码?

小月不知道大家是利用什么平台去获取验证码的,但是告诉大家我是在哪个平台获取的。

LeanCloud :https://leancloud.cn/

文档:https://leancloud.cn/docs/sms_guide-js.html

在这个平台首先去要注册一个账号,在设置里面设置自己的信息按照文档去操作就可以了这里不多说了,大部分是后台去操作些接口的,我们前端有能力的可以自己去尝试用php去写接口。(懒惰的我是不会写。)

一般是两个接口:

1.发送验证请求(这样你的手机会受到短信验证哦)

2.返回数据验证手机号和验证是否一致

根据后台攻城狮的接口去实现吧。

前端页面的工作

下面这段代码就是上图所示的页面

<div class="pop">
<div class="con">
<span class="close"><img src="img/close.png"></span>
<div class="page1">
<p class="info">
<span class="title">手机号:</span>
<input type="tel" class="tel" id="mobile" onkeyup="value=value.replace(/[^\w\.\/]/ig,'')" required="" placeholder="请输入您的手机号">
</p>
<p class="info">
<span class="title">验证码:</span>
<input type="tel" class="code" placeholder="输入验证码">
<span class="code1">获取验证码</span>
</p>
<div class="demand demand2" style="width: 70%; margin-top: 20px;">提交</div>
</div>
<div class="page2">
<p class="p1">提交成功</p>
<p class="p2">我们将在索要成功后</p>
<p class="p2">第一时间通知您!</p>
<div class="demand demand3" style="width: 80%; margin-top: 20px; margin-bottom: 10px;">朕知道了</div>
</div>
</div>
</div>

校验手机号是否正确

//校验手机号
//页面的input写的正则下面直接调用方法就可以的
jQuery.extend({
checkmobileNo: function(str) {
var re =/^1[3|7|5|8]\d{9}$/;
if (re.test(str)) {
return true;
} else {
return false;
}
}
});

JS/JQ部分处理发送短信验证请求

//发送验证码给手机 
$.ajax({
type: 'GET',
url:"你们后台提供的接口" + mobile, //即上面的接口1
success: function(data, status) {
if (data.errcode==0) {
alert("已发送");
$(".code1").attr("disabled", "disabled");
$(".code1").css("background-color", "#b4b2b3");
//下面就是实现倒计时的效果代码
var d = new Date();
d.setSeconds(d.getSeconds() + 59);
var m = d.getMonth() + 1;
var time = d.getFullYear() + '-' + m + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
var id = ".code1";
var end_time = new Date(Date.parse(time.replace(/-/g, "/"))).getTime(),
//月份是实际月份-1
sys_second = (end_time - new Date().getTime()) / 1000;
var timer = setInterval(function() {
if (sys_second > 1) {
sys_second -= 1;
var day = Math.floor((sys_second / 3600) / 24);
var hour = Math.floor((sys_second / 3600) % 24);
var minute = Math.floor((sys_second / 60) % 60);
var second = Math.floor(sys_second % 60);
var time_text = '';
if (day > 0) {
time_text += day + '天';
}
if (hour > 0) {
if (hour < 10) {
hour = '0' + hour;
}
time_text += hour + '小时';
}
if (minute > 0) {
if (minute < 10) {
minute = '0' + minute;
}
time_text += minute + '分';
}
if (second > 0) {
if (second < 10) {
second = '0' + second;
}
time_text += second + '秒';
}
$(id).text(time_text);
} else {
clearInterval(timer);
$(".code1").attr("disabled", false);
$(".code1").text('获取验证码');
$(".code1").css("background-color", "#f67a62");
}
},
1000); 
}else{
alert("发送失败,请再试一次。");
}
},
error: function(data, status) {
alert(status);
}
});
});

向服务器提交信息

//验证验证码和手机发送的验证码是否一致
$.ajax({
type: 'GET',
url: "接口2",
success: function(data, status) {
if (data.errcode==0) {
//向服务器提交信息
$.ajax({
type: 'POST',
url: "向服务器提交你们索要填写的信息接口",
data: JSON.stringify({ //data这里看你们的需求根据接口的数据去写
"project_id": pid,
"phone": mobile,
"device":d
}),
success: function(data, status) {
if (data.errcode==0) {
$('.page1').hide();
$('.page2').show();
}else{
alert("提交失败,请在尝试一次!");
}
},
error: function(data, status) {
alert(data.errMsg);
}
});
}else{
alert("验证码不正确!");
}
},
error: function(data, status) {
alert(status);
}
});
});

以上所述是小编给大家介绍的JS/jQ实现免费获取手机验证码倒计时效果的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery 学习笔记 选择器之二
Jul 23 Javascript
JavaScript 内置对象属性及方法集合
Jul 04 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
Jul 15 Javascript
JavaScript返回网页中超链接数量的方法
Apr 03 Javascript
Js的Array数组对象详解
Feb 22 Javascript
JavaScript设计模式经典之工厂模式
Feb 24 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
jQuery表单验证简单示例
Oct 17 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
Nov 09 Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
mpvue将vue项目转换为小程序
Sep 30 Javascript
Cordova(ionic)项目实现双击返回键退出应用
Sep 17 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
Jun 13 #Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
Jun 13 #Javascript
BootStrap智能表单demo示例详解
Jun 13 #Javascript
Bootstrap布局之栅格系统详解
Jun 13 #Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 #Javascript
jquery制做精致的倒计时特效
Jun 13 #Javascript
VUEJS实战之利用laypage插件实现分页(3)
Jun 13 #Javascript
You might like
php强制下载类型的实现代码
2011/04/21 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
详解python datetime模块
2020/08/17 Python
python 实现有道翻译功能
2021/02/26 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
新闻专业学生的自我评价
2014/02/13 职场文书
机修工工作职责
2014/02/21 职场文书
新年晚会主持词
2014/03/24 职场文书
学校读书活动总结
2014/06/30 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
写给老师的感谢信
2015/01/20 职场文书
音乐教师个人总结
2015/02/06 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
Python使用openpyxl模块处理Excel文件
2022/06/05 Python