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

