基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)


Posted in Javascript onSeptember 02, 2016

相关阅读:

今天测试提了一个bug,发送短信倒计时功能,要求关闭页面也要进行倒计时。这想到了,当年我参与的周杰伦演唱会的先付先抢功能。与之类似,只不过,那个项目的时间都是服务器时间,本人目前有点偷懒,就用客户端的时间了。

一下是完整的代码,只不过在客户端的效率不是很好。

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Document</title>
<script src="http://cdn.bootcss.com/jquery/3.1.0/jquery.js"></script>
<script src="http://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js"></script>
<!--<script src="jquery.min.js"></script>-->
<!-- <script src="jquery.cookie.js"></script>-->
<!-- <script src="//cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>-->
</head>
<body>
<input id="phonenum" type="text" value="18518181818"/>
<input id="second" type="button" value="免费获取验证码" />
</body>
<script>
$(function(){
$("#second").click(function (){
sendCode($("#second"));
});
checkCountdown();
})
//校验打开页面的时候是否要继续倒计时
function checkCountdown(){
var secondsremained = $.cookie("secondsremained");
if(secondsremained){
var date = new Date(unescape(secondsremained));
setCoutDown(date,$("#second"));
}
}
//发送验证码
function sendCode(obj){
var phonenum = $("#phonenum").val();
var result = isPhoneNum();
if(result){
//加载ajax 获取验证码的方法
// doPostBack('${base}/login/getCode.htm',backFunc1,{"phonenum":phonenum});
var date = new Date();
addCookie("secondsremained",date.toGMTString(),60);//添加cookie记录,有效时间60s
setCoutDown(date,obj);
}
} 
var nowDate = null;
var time_difference = 0;
var count_down = 0;
function setCoutDown(date,obj) { 
nowDate = new Date();
time_difference = ((nowDate- date)/1000).toFixed(0);
count_down = 60 - time_difference;
console.log(count_down);
if(count_down<=0){
obj.removeAttr("disabled"); 
obj.val("免费获取验证码"); 
addCookie("secondsremained","",60);//添加cookie记录,有效时间60s
return;
}
obj.attr("disabled", true); 
obj.val("重新发送(" + count_down + ")"); 
setTimeout(function() { setCoutDown(date,obj) },1000) //每1000毫秒执行一次
} 
//发送验证码时添加cookie
function addCookie(name,value,expiresHours){ 
//判断是否设置过期时间,0代表关闭浏览器时失效
if(expiresHours>0){ 
var date=new Date(); 
date.setTime(date.getTime()+expiresHours*1000); 
$.cookie(name, escape(value), {expires: date});
}else{
$.cookie(name, escape(value));
}
} 
//校验手机号是否合法
function isPhoneNum(){
var phonenum = $("#phonenum").val();
var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; 
if(!myreg.test(phonenum)){ 
alert('请输入有效的手机号码!'); 
return false; 
}else{
return true;
}
} 
</script>
</html>

以上所述是小编给大家介绍的基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript编程中容易出BUG的几点小知识
Jan 31 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
Oct 19 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
基于zepto.js实现手机相册功能
Jul 11 Javascript
基于Bootstrap实现城市三级联动
Nov 23 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 Javascript
基于ionic实现下拉刷新功能
May 10 Javascript
Vue-router 切换组件页面时进入进出动画方法
Sep 01 Javascript
js实现全选反选不选功能代码详解
Apr 24 Javascript
JS实现炫酷轮播图
Nov 15 Javascript
JS前端使用canvas实现物体的点选示例
Aug 05 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 #Javascript
node.js中module.exports与exports用法上的区别
Sep 02 #Javascript
AngularJs Scope详解及示例代码
Sep 01 #Javascript
AngularJs Modules详解及示例代码
Sep 01 #Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 #Javascript
AngularJs 国际化(I18n/L10n)详解
Sep 01 #Javascript
AngularJs Forms详解及简单示例
Sep 01 #Javascript
You might like
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
PHP函数超时处理方法
2016/02/14 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
php多进程应用场景实例详解
2019/07/22 PHP
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
小程序自动化测试的示例代码
2020/08/11 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
python操作xml文件示例
2014/04/07 Python
python计算时间差的方法
2015/05/20 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
序列化Python对象的方法
2020/08/01 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
高中生物教学反思
2014/02/05 职场文书
读书之星事迹材料
2014/05/12 职场文书
安全月宣传标语
2014/10/07 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
师德师风整改措施
2014/10/24 职场文书
公务员政审材料
2014/12/23 职场文书
护士业务学习心得体会
2016/01/25 职场文书
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫