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 相关文章推荐
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
js查错流程归纳
May 04 Javascript
jQuery中ajax的使用与缓存问题的解决方法
Dec 19 Javascript
JavaScript中的数组操作介绍
Dec 30 Javascript
Jquery 效果使用详解
Nov 23 Javascript
ashx文件获取$.ajax()方法发送的数据
May 26 Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 Javascript
Bootstrap源码解读排版(1)
Dec 23 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
vue el-table实现自定义表头
Dec 11 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 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
JS 控件事件小结
2012/10/31 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
理解javascript回调函数
2014/12/28 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
jquery实现拖动效果
2016/08/10 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
用Python中的字典来处理索引统计的方法
2015/05/05 Python
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
利用aardio给python编写图形界面
2017/08/21 Python
Python处理中文标点符号大集合
2018/05/14 Python
深入浅析Python的类
2018/06/22 Python
flask框架视图函数用法示例
2018/07/19 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
python实现超市商品销售管理系统
2019/10/25 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
python 穷举指定长度的密码例子
2020/04/02 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
个人职业生涯规划书1500字
2013/12/31 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
虎兄虎弟观后感
2015/06/12 职场文书