JAVA簡訊驗證碼倒計時功能
阿新 • • 發佈:2019-02-10
特別說明:
cookie最初建立的有效時間是60秒.也就是說,你如果在倒計時為20的時候,關閉網頁.20秒之後再開啟,是不會有倒計時顯示的;但是,如果倒計時為20時,關閉頁面,如果在20秒內重新開啟頁面,是有倒計時顯示的.
這是頁面上的傳送驗證碼按鈕
[html] view plain copy print?- <inputid="second"type="button"value="免費獲取驗證碼"/>
js對cookie的操作
[html] view plain copy print?- //傳送驗證碼時新增cookie
-
function addCookie(name,value,expiresHours){
- var cookieString=name+"="+escape(value);
- //判斷是否設定過期時間,0代表關閉瀏覽器時失效
- 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;
- }
- //根據名字獲取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;
- }
- }
- }
主要邏輯程式碼
[html] view plain copy print?- $(function(){
- $("#second").click(function (){
- sendCode($("#second"));
- });
- v = getCookieValue("secondsremained");//獲取cookie值
- if(v>0){
- settime($("#second"));//開始倒計時
- }
- })
- //傳送驗證碼
- 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記錄,有效時間60s
- settime(obj);//開始倒計時
- }
- }
- //將手機利用ajax提交到後臺的發簡訊介面
- function doPostBack(url,backFunc,queryParam) {
- $.ajax({
- async : false,
- cache : false,
- type : 'POST',
- url : url,// 請求的action路徑
- data:queryParam,
- error : function() {// 請求失敗處理函式
- },
- success : backFunc
- });
- }
- function backFunc1(data){
- var d = $.parseJSON(data);
- if(!d.success){
- alert(d.msg);
- }else{//返回驗證碼
- alert("模擬驗證碼:"+d.msg);
- $("#code").val(d.msg);
- }
- }
- //開始倒計時
- var countdown;
- function settime(obj) {
- countdown=getCookieValue("secondsremained");
- if (countdown == 0) {
- obj.removeAttr("disabled");
- obj.val("免費獲取驗證碼");
- return;
- } else {
- obj.attr("disabled", true);
- obj.val("重新發送(" + countdown + ")");
- countdown--;
- editCookie("secondsremained",countdown,countdown+1);
- }
- setTimeout(function() { settime(obj) },1000) //每1000毫秒執行一次
- }
- //校驗手機號是否合法
- 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('請輸入有效的手機號碼!');
- return false;
- }else{
- return true;
- }
- }