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 相关文章推荐
js GridView 实现自动计算操作代码
Mar 25 Javascript
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
jQuery简单实现banner图片切换
Jan 02 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
Jan 26 Javascript
jquery滚动加载数据的方法
Mar 09 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
May 27 Javascript
AngularJS压缩JS技巧分析
Nov 08 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
Mar 08 Javascript
javascript使用substring实现的展开与收缩文字功能示例
Jun 17 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 Javascript
js实现星星打分效果
Jul 05 Javascript
js实现简单抽奖功能
Nov 24 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动态页生成静态页的3种常用方法
2014/11/13 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP常用的三种设计模式
2017/02/17 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
Ionic快速安装教程
2016/06/03 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
python实现拓扑排序的基本教程
2018/03/11 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
一份报关员的职业规划范文
2014/01/08 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
党建目标管理责任书
2014/07/25 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书