示例:发送手机验证码
防止页面刷新后,发送验证码按钮重置
注:橙色部分为后增加代码,为防止验证码等待期间用户退出或者切换到其他页面以至于很久之后回到当前页面倒计时还在的问题,加入时间对比,记录用户发送验证码时+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. 多线程-threading模块

    #coding:utf-8 import threading from time import sleep,ctime #音乐播放器 def music(func): for i in range(2 ...

  2. Intelidea右键新建选项没有Java class选项

    Intelidea创建好项目之后,右键新建Java class的时候发现没有改选项,只有以下几个选项 把sec目录设为源码目录,首先打开Project Structure

  3. 3、HTML的body内标签1

    一.特殊符号的表示   #代指空格 < #代指,< > #代指,> ...... #这玩意有很多,记也记不完,用的时候查一下即可: 二.p和br标签 <p>< ...

  4. 任务41:Individual authentication 模板

    使用命令行创建项目 会自动加上ef core和Identity core代码的示例 默认创建mvc是不带Identity的 dotnet new -help:查看可用的命令: -au:Individu ...

  5. bzoj 2331: [SCOI2011]地板【插头dp】

    一开始设计了四种状态,多了一种已经拐弯但是长度为0的情况,后来发现不用,设012表示没插头,没拐弯的插头,拐了弯的插头,然后转移的话12,21,22都不合法,剩下的转移脑补一下即可,ans只能在11, ...

  6. dd 使用记录

    使用dd的工具 1)测试写速度 2)测试读速度 3)测试读写速度 dd说明: if是输入文本,of是输出文本,bs是块大小,count是你指定读写块的数量 /dev/zero是从内存里面读取,不会产生 ...

  7. windows虚拟机下 安装docker 踩过的坑

    首先,你的是win7.8还是win10 windows对docker兼容也是最近的事,所以win7.8的话,安装docker是要用工具箱的,不过官方给了下载. 国内话的可以通过,阿里镜像,或者清华镜像 ...

  8. CF767E ChangeFree【贪心/优先队列】By cellur925

    题目传送门 $naive$想法 最开始的一个贪心策略是每次尽量花掉硬币 ,如果不满足条件,就花纸币.而且不满足条件的时候,要尽量向百取整.(显然是不对的,因为有时候不够)但是显然这个贪心策略是错误的, ...

  9. C++命名空间详解

    使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突.在C++中,变量.函数和类都是大量存在的.如果没有命名空间,这些变量.函数.类的名称将都存在于全局命名空间中,会导致很多冲突.比如,如果我 ...

  10. 容器API