示例:发送手机验证码
防止页面刷新后,发送验证码按钮重置
注:橙色部分为后增加代码,为防止验证码等待期间用户退出或者切换到其他页面以至于很久之后回到当前页面倒计时还在的问题,加入时间对比,记录用户发送验证码时+60秒后的时间,下次进入判断当前时间是否大于记录时间,如果大于或者不存在,则距离上次发送验证码已超过60秒,这时不再读取倒计时。
1.将发送验证码放入cookie $.cookie("time", time); 2.当页面载入时判断cookie是否为空
var date = $.cookie("date");//取上次发送验证码时记录的时间 (发送时间+60s)
if(date && (new Date().getTime() < new Date(date).getTime()) ){//判断当前时间是否小于记录时间
if ($.cookie("time") != undefined && $.cookie("time") != 'NaN'
&& $.cookie("time") != 'null') {// cookie存在倒计时
timekeeping();//修改发送验证码按钮方法
} else {// cookie 没有倒计时
$('#ihd_getcode_btn').prop("disabled", false);
_button.removeClass("disabled");
}
}
3.时间未到时进入修改发送验证码按钮方法
function timekeeping() {
// 把按钮设置为不可以点击
_button.prop("disabled", true);
_button.addClass("disabled");
// 从cookie 中读取剩余倒计时
var time = $.cookie("time");
var interval = setInterval(function() {// 每秒读取一次cookie
// 把剩余总倒计时减掉1
time--;
if (time > 0) {// 剩余倒计时不为零
// 在发送按钮显示剩余倒计时
_button.html(time + "秒后重发");
// 重新写入总倒计时
$.cookie("time", time,{ path: '/',expires : (1/86400)*time});
} else {// 剩余倒计时为零,则显示 重新发送,可点击
// 清除定时器
clearInterval(interval);
// 删除cookie
time = $.cookie("time", time, {expires : -1});
_button.prop("disabled", false);
_button.removeClass("disabled");
_button.html("获取验证码");
}
}, 1000);
};
注:发送验证码方法:
$(".ihd_getcode_btn").click(function() {
var phone = $('input[name="phone"]').val();
if (!mobileRegex.test(phone)) {
apus.ui.toastr.error("手机号格式错误");
return;
}
// 发送验证码
_button.prop("disabled", true);
_button.addClass("disabled");
apus.ui.maskLlock(true);
$.ajax({
type : "post",
url : getUrl('/vip/sendCode'),
dataType : "json",
data : {
phone : phone
},
success : function(result) {
apus.ui.maskLlock(false);
if (result.success) {
apus.ui.toastr.info("验证码发送成功");
$.cookie("time", 60,{ path: '/',expires : (1/86400)*60});
var curDate = new Date();
curDate.setSeconds(curDate.getSeconds()+60);
$.cookie("date",curDate,{ path: '/',expires : (1/86400)*60});
timekeeping();
} else {
apus.ui.toastr.error("验证码发送失败," + result.msg);
_button.prop("disabled", false);
_button.removeClass("disabled");
_button.html("获取验证码");
}
},
error : function(e) {
apus.ui.maskLlock(false);
_button.prop("disabled", false);
_button.removeClass("disabled");
_button.html("获取验证码");
apus.ui.toastr.error("网络异常,请稍候重试");
}
});
});

jquery--cookie应用的更多相关文章

  1. jquery.cookie的使用

    今天想到了要为自己的影像日记增加赞的功能,并且需要用到cookie. 记得原生的js操作cookie也不是很麻烦的,但似乎jquery更简单,不过相比原生js,需要额外引入2个文件,似乎又不是很好,但 ...

  2. jQuery cookie使用

    什么是jquery cookie? A simple, lightweight jQuery plugin for reading, writing and deleting cookies. Usa ...

  3. jQuery插件 -- Cookie插件jquery.cookie.js(转)

    Cookie是网站设计者放置在客户端的小文本文件.Cookie能为用户提供很多的使得,例如购物网站存储用户曾经浏览过的产品列表,或者门户网站记住用户喜欢选择浏览哪类新闻. 在用户允许的情况下,还可以存 ...

  4. jquery cookie的用法

    http://www.cnblogs.com/qiantuwuliang/archive/2009/07/19/1526663.html jQuery cookie是个很好的cookie插件,大概的使 ...

  5. jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码

    下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function ...

  6. 【转】jquery.cookie.js的使用

    Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是 ...

  7. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  8. jquery.cookie() 的使用(原)

    jquery.cookie()是一个轻量级的cookie 插件,可以读取.写入.删除 cookie. 步奏: 1. 添加jQuery插件和jQuery.cookie插件 <script src= ...

  9. Jquery.cookie.js 源码和使用方法

    jquery.cookie.js源码和使用方法 jQuery操作cookie的插件,大概的使用方法如下 $.cookie(‘the_cookie’); //读取Cookie值$.cookie(’the ...

  10. jQuery.cookie.js插件了解及使用方法

    jquery.cookie.js插件实现浏览器的cookie存储,该插件是基于jquery开发,方便cookie使用. jquerycookie.js的下载地址 http://plugins.jque ...

随机推荐

  1. bzoj1017 [JSOI2008]魔兽地图DotR——DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1017 好难想的状态啊!f[i][j][k]表示i号物品有j个向上贡献,一共花了k钱的最大力量 ...

  2. 使用slot分发内容

    为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件的模板.这个过程被称为 内容分发 使用特殊的<slot>元素作为原始内容的插槽 除非子组件模板包含至少一个<slot&g ...

  3. 如何在XCode中更改iPhone或iPad模拟器类型

    如何在XCode中更改iPhone或iPad模拟器类型 参考方法一(永久,一旦设置后,每次运行指定的模拟器):(1)选择顶层菜单Project 中的 Set Active Executable(2)根 ...

  4. Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)

    第一种代理即Java的动态代理方式上一篇已经分析,在这里不再介绍,现在我们先来了解下GCLIB代理是什么?它又是怎样实现的?和Java动态代理有什么区别? cglib(Code Generation ...

  5. 详细讲解:零知识证明 之 ZCash 完整的匿名交易流程

    作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2 ...

  6. poj3617【贪心】

    题意: 给定长度为N的字符串S,要构造一个长度为N的字符串T串. 从S的头部删除一个字符,加到T的尾部 从S的尾部删除一个字符,加到T的尾部 目标是构造字典序尽可能小的字符串. 思路: 贪心,每次取小 ...

  7. bzoj 1433: [ZJOI2009]假期的宿舍【匈牙利算法】

    i能睡j床的连边(i,j),跑最大匹配或者最大流,然后看看人数能不能对上总数即可 #include<iostream> #include<cstdio> #include< ...

  8. Beta版本冲刺第一天!

    该作业所属课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业地址:https://edu.cnblogs.com/c ...

  9. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) C

    Description In the army, it isn't easy to form a group of soldiers that will be effective on the bat ...

  10. 18.5.2动态代理和AOP

    ----此处是JDK动态代理----package d18_5_2; public interface IDog { void info(); void run(); } package d18_5_ ...