国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js實現(xiàn)發(fā)送驗證碼后的倒計時功能

2024-05-06 16:20:59
字體:
來源:轉載
供稿:網(wǎng)友

本文解決方案的基本思路是點擊就將按鈕設為disabled,然后根據(jù)cookie判斷是否設置過期時間,將手機利用ajax提交到后臺的發(fā)短信接口,就可以了

之前分享過只用js實現(xiàn)倒計時的功能,后來測試時發(fā)現(xiàn),刷新或關閉網(wǎng)頁后,倒計時就不能用了.網(wǎng)上也沒找到合適的解決方案,所以自己就寫了個,這次的算是優(yōu)化版吧,能滿足刷新或重新打開網(wǎng)頁后,倒計時依然能用

特別說明:

cookie最初創(chuàng)建的有效時間是60秒.也就是說,你如果在倒計時為20的時候,關閉網(wǎng)頁.20秒之后再打開,是不會有倒計時顯示的;但是,如果倒計時為20時,關閉頁面,如果在20秒內重新打開頁面,是有倒計時顯示的.

html代碼

 

 
  1. <input id="second" type="button" value="免費獲取驗證碼" /> 

js對cookie的操作

 

 
  1. //發(fā)送驗證碼時添加cookie 
  2. function addCookie(name,value,expiresHours){  
  3. var cookieString=name+"="+escape(value);  
  4. //判斷是否設置過期時間,0代表關閉瀏覽器時失效 
  5. if(expiresHours>0){  
  6. var date=new Date();  
  7. date.setTime(date.getTime()+expiresHours*1000);  
  8. cookieString=cookieString+";expires=" + date.toUTCString();  
  9. }  
  10. document.cookie=cookieString;  
  11. }  
  12. //修改cookie的值 
  13. function editCookie(name,value,expiresHours){  
  14. var cookieString=name+"="+escape(value);  
  15. if(expiresHours>0){  
  16. var date=new Date();  
  17. date.setTime(date.getTime()+expiresHours*1000); //單位是毫秒 
  18. cookieString=cookieString+";expires=" + date.toGMTString();  
  19. }  
  20. document.cookie=cookieString;  
  21. }  
  22. //根據(jù)名字獲取cookie的值 
  23. function getCookieValue(name){  
  24. var strCookie=document.cookie;  
  25. var arrCookie=strCookie.split("; ");  
  26. for(var i=0;i<arrCookie.length;i++){  
  27. var arr=arrCookie[i].split("=");  
  28. if(arr[0]==name){ 
  29. return unescape(arr[1]); 
  30. break
  31. }else
  32. return "";  
  33. break
  34. }  
  35. }  
  36.  

主要邏輯代碼

 

 
  1. $(function(){ 
  2. $("#second").click(function (){ 
  3. sendCode($("#second")); 
  4. }); 
  5. v = getCookieValue("secondsremained");//獲取cookie值 
  6. if(v>0){ 
  7. settime($("#second"));//開始倒計時 
  8. }) 
  9. //發(fā)送驗證碼 
  10. function sendCode(obj){ 
  11. var phonenum = $("#phonenum").val(); 
  12. var result = isPhoneNum(); 
  13. if(result){ 
  14. doPostBack('${base}/login/getCode.htm',backFunc1,{"phonenum":phonenum}); 
  15. addCookie("secondsremained",60,60);//添加cookie記錄,有效時間60s 
  16. settime(obj);//開始倒計時 
  17. //將手機利用ajax提交到后臺的發(fā)短信接口 
  18. function doPostBack(url,backFunc,queryParam) { 
  19. $.ajax({ 
  20. async : false
  21. cache : false
  22. type : 'POST'
  23. url : url,// 請求的action路徑 
  24. data:queryParam, 
  25. error : function() {// 請求失敗處理函數(shù) 
  26. }, 
  27. success : backFunc 
  28. }); 
  29. function backFunc1(data){ 
  30. var d = $.parseJSON(data); 
  31. if(!d.success){ 
  32. alert(d.msg); 
  33. }else{//返回驗證碼 
  34. alert("模擬驗證碼:"+d.msg); 
  35. $("#code").val(d.msg); 
  36. //開始倒計時 
  37. var countdown; 
  38. function settime(obj) {  
  39. countdown=getCookieValue("secondsremained"); 
  40. if (countdown == 0) {  
  41. obj.removeAttr("disabled");  
  42. obj.val("免費獲取驗證碼");  
  43. return
  44. else {  
  45. obj.attr("disabled"true);  
  46. obj.val("重新發(fā)送(" + countdown + ")");  
  47. countdown--; 
  48. editCookie("secondsremained",countdown,countdown+1); 
  49. }  
  50. setTimeout(function() { settime(obj) },1000) //每1000毫秒執(zhí)行一次 
  51. }  
  52. //校驗手機號是否合法 
  53. function isPhoneNum(){ 
  54. var phonenum = $("#phonenum").val(); 
  55. var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+/d{8})$/;  
  56. if(!myreg.test(phonenum)){  
  57. alert('請輸入有效的手機號碼!');  
  58. return false;  
  59. }else
  60. return true

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 无为县| 噶尔县| 通榆县| 横山县| 科技| 民丰县| 嘉善县| 深州市| 静宁县| 武冈市| 九龙县| 石台县| 哈密市| 铜鼓县| 左权县| 昭苏县| 汕尾市| 柳林县| 治多县| 富顺县| 奈曼旗| 墨脱县| 呼和浩特市| 卢龙县| 渭源县| 漳浦县| 边坝县| 扎鲁特旗| 恩施市| 正定县| 平乡县| 镇沅| 宕昌县| 富宁县| 松潘县| 遂溪县| 临汾市| 会理县| 无为县| 莱阳市| 昌江|