在做用户注册时,需要验证手机号码,为避免频繁发送。做了一个倒计时的按钮。
但是页面刷新后数据就全没了,包括倒计时就失效了,又可以发送短信了。
需要借助cookie,把数据保存数据在本地。
cookie搭配jQuery使用;
先导入jQuery;再引入cookie:
当然,这里我并未真的发送短信,而是后台接口模拟的验证码,传出页面。
增删查改操作:
增:
复制代码
1查:$.cookie("timeCounter")
checkPhone
timeCounter
输入框和倒计时按钮都是不可修改/点击的【disable:true】,直到清零才恢复可以修改【disable:false】。
复制代码
1
2
3$('#timeBtn').attr("disabled", false); //输入框也可修改 $('#phone').attr("disabled", false);
即便刷新页面,onload后,会自动读取cookie有无值,有值就渲染填充进dom,继续倒计时。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123/** * 手机验证码倒计时 */ $(function() { if ($.cookie("timeCounter") != undefined && $.cookie("timeCounter") != 'NaN' && $.cookie("timeCounter") != 'null') { //cookie存在倒计时 timekeeping(); } else { //cookie 没有倒计时 $('#timeBtn').attr("disabled", false); //输入框也可修改 $('#phone').attr("disabled", false); } function timekeeping() { //把按钮设置为不可以点击 $('#timeBtn').attr("disabled", true); $('#timeBtn').val('请等待' + $.cookie("timeCounter") + '秒'); //cookie读取电话号码,填入表单,输入框也不可以修改 $('#phone').val($.cookie("checkPhone")); $('#phone').attr("disabled", true); var interval = setInterval(function() { //每秒读取一次cookie //从cookie 中读取剩余倒计时 timeCounter = $.cookie("timeCounter"); console.log(timeCounter); //在发送按钮显示剩余倒计时 $('#timeBtn').val('请等待' + timeCounter + '秒'); //把剩余总倒计时减掉1 timeCounter--; if (timeCounter == 0) { //剩余倒计时为零,则显示 重新发送,可点击 //清除定时器 clearInterval(interval); //删除cookie $.removeCookie('timeCounter'); $.removeCookie('checkPhone'); //显示重新发送 $('#timeBtn').val('重新发送'); //把发送按钮设置为可点击 $('#timeBtn').attr("disabled", false); //把phone输入框设置为可输入 $('#phone').attr("disabled", false); } else { //剩余倒计时不为零 //重新写入总倒计时 $.cookie("timeCounter", timeCounter); } }, 1000); } //绑定发送按钮 $('#timeBtn').click(function(event) { //校验手机号码 var phone = $('#phone').val(); //保存手机号 $.cookie("checkPhone", phone); var pre = /^[1][358][0-9]{9}$/; if (phone == '') { layer.open({ content: '手机号码不能为空', time: 2000 }); return false; } else { var pre = /^[1][358][0-9]{9}$/; if (!pre.test(phone)) { layer.open({ content: '手机号码格式有误!', time: 2000 }); return false; } } $.ajax({ url: '/mall/verification/sendsms', //服务器发送短信 type: 'post', dataType: 'json', data: { phone: phone }, }).done(function(data) { var str = data.message;//"发送短信验证码成功,请注意查看您的手机"; if (data.state == 0) { $.cookie("timeCounter", 60); timekeeping(); } else { switch (data.state) { case '160038': str = "短信验证码发送过频繁"; break; case '160034': str = "号码黑名单"; break; case '160000': str = "系统错误"; break; case '000000': str = "发送成功"; break; case '112300': str = "接收短信的手机号码为空"; break; case '160040': str = "验证码超出发送上限"; break; case '160042': str = "号码格式有误"; break; default: str = "发送验证码失败"; break; } } layer.open({ content: str, // time: 2000 }); }) .fail(function() { console.log("出错!"); }) .always(function() { console.log("完成发送!"); }); }); })
在哪里查看cookie呢?谷歌浏览器:
拓展:(【记住密码】功能:搭配md5或base64加密保存,缺点是不够安全)
最后
以上就是爱撒娇月饼最近收集整理的关于使用cookie缓存数据的全部内容,更多相关使用cookie缓存数据内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复