基于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 到 JQuery (1)学习小结
Feb 12 Javascript
jQuery学习4 浏览器的事件模型
Feb 07 Javascript
Javascript 网页水印(非图片水印)实现代码
Mar 01 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
Sep 16 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
May 19 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
Sep 20 Javascript
Js 获取当前函数参数对象的实现代码
Jun 20 Javascript
jQuery ztree实现动态树形多选菜单
Aug 12 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
Feb 05 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
基于Vue的侧边目录组件的实现
Feb 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动态添加url查询参数的方法
2015/04/14 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
js实现简易ATM功能
2020/10/27 Javascript
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python中文字符串截取问题
2015/06/15 Python
基于Python实现一个简单的银行转账操作
2016/03/06 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
python识别验证码的思路及解决方案
2020/09/13 Python
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
诉讼授权委托书
2014/10/15 职场文书
房租涨价通知
2015/04/23 职场文书
茶花女读书笔记
2015/06/29 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
我的收音机情缘
2022/04/05 无线电
mysql全面解析json/数组
2022/07/07 MySQL