基于jQuery實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼后的倒計(jì)時(shí)功能(無視頁面關(guān)閉)
相關(guān)閱讀:
基于JS實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼后的倒計(jì)時(shí)功能(無視頁面刷新,頁面關(guān)閉不進(jìn)行倒計(jì)時(shí)功能)
今天測試提了一個(gè)bug,發(fā)送短信倒計(jì)時(shí)功能,要求關(guān)閉頁面也要進(jìn)行倒計(jì)時(shí)。這想到了,當(dāng)年我參與的周杰倫演唱會的先付先搶功能。與之類似,只不過,那個(gè)項(xiàng)目的時(shí)間都是服務(wù)器時(shí)間,本人目前有點(diǎn)偷懶,就用客戶端的時(shí)間了。
一下是完整的代碼,只不過在客戶端的效率不是很好。
<!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="http://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="免費(fèi)獲取驗(yàn)證碼" /> </body> <script> $(function(){ $("#second").click(function (){ sendCode($("#second")); }); checkCountdown(); }) //校驗(yàn)打開頁面的時(shí)候是否要繼續(xù)倒計(jì)時(shí) function checkCountdown(){ var secondsremained = $.cookie("secondsremained"); if(secondsremained){ var date = new Date(unescape(secondsremained)); setCoutDown(date,$("#second")); } } //發(fā)送驗(yàn)證碼 function sendCode(obj){ var phonenum = $("#phonenum").val(); var result = isPhoneNum(); if(result){ //加載ajax 獲取驗(yàn)證碼的方法 // doPostBack('${base}/login/getCode.htm',backFunc1,{"phonenum":phonenum}); var date = new Date(); addCookie("secondsremained",date.toGMTString(),60);//添加cookie記錄,有效時(shí)間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("免費(fèi)獲取驗(yàn)證碼"); addCookie("secondsremained","",60);//添加cookie記錄,有效時(shí)間60s return; } obj.attr("disabled", true); obj.val("重新發(fā)送(" + count_down + ")"); setTimeout(function() { setCoutDown(date,obj) },1000) //每1000毫秒執(zhí)行一次 } //發(fā)送驗(yàn)證碼時(shí)添加cookie function addCookie(name,value,expiresHours){ //判斷是否設(shè)置過期時(shí)間,0代表關(guān)閉瀏覽器時(shí)失效 if(expiresHours>0){ var date=new Date(); date.setTime(date.getTime()+expiresHours*1000); $.cookie(name, escape(value), {expires: date}); }else{ $.cookie(name, escape(value)); } } //校驗(yàn)手機(jī)號是否合法 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('請輸入有效的手機(jī)號碼!'); return false; }else{ return true; } } </script> </html>
以上所述是小編給大家介紹的基于jQuery實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼后的倒計(jì)時(shí)功能(無視頁面關(guān)閉),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
jquery實(shí)現(xiàn)側(cè)邊彈出的垂直導(dǎo)航
這篇文章主要介紹了jquery動畫特效結(jié)合css實(shí)現(xiàn)側(cè)邊彈出的垂直導(dǎo)航的方法及代碼分享,需要的朋友可以參考下2014-12-12JQuery判斷radio(單選框)是否選中和獲取選中值方法總結(jié)
這篇文章主要介紹了JQuery判斷radio(單選框)是否選中和獲取選中值方法總結(jié),本文講解了利用獲取選中值判斷選中、使用checked屬性判斷選中、jquery獲取radio單選按鈕的值、獲取一組radio被選中項(xiàng)的值、設(shè)置單選按鈕被選中等內(nèi)容,需要的朋友可以參考下2015-04-04初學(xué)Jquery插件制作 在SageCRM的查詢屏幕隱藏部分行的功能
SageCRM的查詢條件屏幕的條件比較多,會占用界面,用戶希望首先顯示常用的查詢條件,然后點(diǎn)擊展開的按鈕,可以看到一些不常用的查詢條件2011-12-12easyui簡介_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了easyui簡介,詳細(xì)的介紹了什么是easyui和easyui的用法,有興趣的可以了解一下2017-07-07jquery表格內(nèi)容篩選實(shí)現(xiàn)思路及代碼
基于jquery實(shí)現(xiàn)表格內(nèi)容篩選,本文采用兩種方式實(shí)現(xiàn),感興趣的朋友可以參考下哈,希望對你學(xué)習(xí)jquery篩選有所幫助2013-04-04