基于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 清空File控件的路径值
Jul 08 Javascript
js返回前一页刷新本页重载页面
Jul 29 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
Dec 16 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
Feb 05 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
Apr 16 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
javascript遍历json对象的key和任意js对象属性实例
Mar 09 Javascript
微信小程序 侧滑删除(左滑删除)
May 23 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
vue-cli + sass 的正确打开方式图文详解
Oct 27 Javascript
layer实现关闭弹出层刷新父界面功能详解
Nov 15 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
Aug 09 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
用nodejs写的一个简单项目打包工具
2013/05/11 NodeJs
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
一个超级简单的python web程序
2014/09/11 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
python 进程池pool使用详解
2020/10/15 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL