基于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 对象的解释
Nov 24 Javascript
jquery ajax提交表单数据的两种方式
Nov 24 Javascript
倒记时60刷新网页的js代码
Feb 18 Javascript
js获取指定的cookie的具体实现
Feb 20 Javascript
屏蔽相应键盘按钮操作
Mar 10 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
Apr 03 Javascript
AngularJS之依赖注入模拟实现
Aug 19 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
vue2.0页面前进刷新回退不刷新的实现方法
Jul 31 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
Vue Extends 扩展选项用法完整实例
Sep 17 Javascript
微信小程序webSocket的使用方法
Feb 20 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简单实现文本计数器的方法
2016/04/28 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
浅谈React组件之性能优化
2018/03/02 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
对Python函数设计规范详解
2019/07/19 Python
python打包生成so文件的实现
2020/10/30 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
《自选商场》教学反思
2014/02/14 职场文书
大学毕业生推荐信
2014/07/09 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
HttpClient实现表单提交上传文件
2022/08/14 Java/Android