基于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 相关文章推荐
JS 文字符串转换unicode编码函数
May 30 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 Javascript
javascript学习笔记(六) Date 日期类型
Jun 19 Javascript
A标签触发onclick事件而不跳转的多种解决方法
Jun 27 Javascript
jQuery提示效果代码分享
Nov 20 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
12行javascript代码绘制一个八卦图
Apr 02 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
vue下拉列表功能实例代码
Apr 08 Javascript
vue init webpack 建vue项目报错的解决方法
Sep 29 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
Dec 05 Javascript
js实现简单的随机点名器
Sep 17 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的异常处理类Exception的使用及说明
2012/06/13 PHP
PHP如何使用Memcached
2016/04/05 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
基于JQuery的密码强度验证代码
2010/03/01 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
投资合作协议书
2014/04/17 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
明星员工获奖感言
2014/08/14 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
农村党支部承诺书
2015/04/30 职场文书
婚育证明样本
2015/06/16 职场文书
运动员入场前导词
2015/07/20 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle