最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年05月28日 16:14:50   投稿:hebedich  
本文解決方案的基本思路是點(diǎn)擊就將按鈕設(shè)為disabled,然后根據(jù)cookie判斷是否設(shè)置過期時(shí)間,將手機(jī)利用ajax提交到后臺(tái)的發(fā)短信接口,就可以了

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

特別說明:

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

html代碼

<input id="second" type="button" value="免費(fèi)獲取驗(yàn)證碼" />

js對(duì)cookie的操作

//發(fā)送驗(yàn)證碼時(shí)添加cookie
function addCookie(name,value,expiresHours){ 
  var cookieString=name+"="+escape(value); 
  //判斷是否設(shè)置過期時(shí)間,0代表關(guān)閉瀏覽器時(shí)失效
  if(expiresHours>0){ 
    var date=new Date(); 
    date.setTime(date.getTime()+expiresHours*1000); 
    cookieString=cookieString+";expires=" + date.toUTCString(); 
  } 
    document.cookie=cookieString; 
} 
//修改cookie的值
function editCookie(name,value,expiresHours){ 
  var cookieString=name+"="+escape(value); 
  if(expiresHours>0){ 
   var date=new Date(); 
   date.setTime(date.getTime()+expiresHours*1000); //單位是毫秒
   cookieString=cookieString+";expires=" + date.toGMTString(); 
  } 
   document.cookie=cookieString; 
} 
//根據(jù)名字獲取cookie的值
function getCookieValue(name){ 
   var strCookie=document.cookie; 
   var arrCookie=strCookie.split("; "); 
   for(var i=0;i<arrCookie.length;i++){ 
    var arr=arrCookie[i].split("="); 
    if(arr[0]==name){
     return unescape(arr[1]);
     break;
    }else{
       return ""; 
       break;
     } 
   } 
    
}

主要邏輯代碼

$(function(){
  $("#second").click(function (){
    sendCode($("#second"));
  });
  v = getCookieValue("secondsremained");//獲取cookie值
  if(v>0){
    settime($("#second"));//開始倒計(jì)時(shí)
  }
})
//發(fā)送驗(yàn)證碼
function sendCode(obj){
  var phonenum = $("#phonenum").val();
  var result = isPhoneNum();
  if(result){
    doPostBack('${base}/login/getCode.htm',backFunc1,{"phonenum":phonenum});
    addCookie("secondsremained",60,60);//添加cookie記錄,有效時(shí)間60s
    settime(obj);//開始倒計(jì)時(shí)
  }
}
//將手機(jī)利用ajax提交到后臺(tái)的發(fā)短信接口
function doPostBack(url,backFunc,queryParam) {
  $.ajax({
    async : false,
    cache : false,
    type : 'POST',
    url : url,// 請(qǐng)求的action路徑
    data:queryParam,
    error : function() {// 請(qǐng)求失敗處理函數(shù)
    },
    success : backFunc
  });
}
function backFunc1(data){
  var d = $.parseJSON(data);
  if(!d.success){
    alert(d.msg);
  }else{//返回驗(yàn)證碼
    alert("模擬驗(yàn)證碼:"+d.msg);
    $("#code").val(d.msg);
  }
}
//開始倒計(jì)時(shí)
var countdown;
function settime(obj) { 
  countdown=getCookieValue("secondsremained");
  if (countdown == 0) { 
    obj.removeAttr("disabled");  
    obj.val("免費(fèi)獲取驗(yàn)證碼"); 
    return;
  } else { 
    obj.attr("disabled", true); 
    obj.val("重新發(fā)送(" + countdown + ")"); 
    countdown--;
    editCookie("secondsremained",countdown,countdown+1);
  } 
  setTimeout(function() { settime(obj) },1000) //每1000毫秒執(zhí)行一次
} 
//校驗(yàn)手機(jī)號(hào)是否合法
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('請(qǐng)輸入有效的手機(jī)號(hào)碼!'); 
    return false; 
  }else{
    return true;
  }
}

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

相關(guān)文章

最新評(píng)論

长子县| 天镇县| 黎城县| 民权县| 红原县| 深州市| 白河县| 游戏| 高要市| 泰兴市| 溧阳市| 内乡县| 葫芦岛市| 泰兴市| 思茅市| 维西| 黑龙江省| 凤山市| 桂阳县| 景泰县| 万山特区| 宁陵县| 宜良县| 隆尧县| 广德县| 山阳县| 贵南县| 通道| 大埔区| 余姚市| 安化县| 通山县| 玉林市| 永德县| 长葛市| 汨罗市| 大庆市| 民权县| 马公市| 普兰县| 大安市|