在web網頁中,用戶的一些行爲,例如註冊,登陸,付款,修改密碼等,都須要網站經過手機驗證碼來確認其行爲身份,從而保證用戶帳戶和網站自身的安全.web
網頁中的驗證碼通常都是採用點擊獲取的方式,在實現頁面的獲取手機驗證碼按鈕時,着重須要考慮的是如下幾點:ajax
在這裏咱們主要來實現前兩項效果.
安全
保證網頁刷新後驗證碼倒計時不清零須要使用cookie實現,爲了不篇幅過長,內容雜亂,不作贅述.服務器
按鈕能夠用如下兩種獲取驗證碼的實現方法:
cookie
這兩種方法雖然代碼可能不一樣,可是基本原理是差很少的,這裏咱們就只使用第一種方法來進行說明.函數
通常驗證碼的頁面HTML結構相似以下:post
<div> <p >請輸入手機號:</p> <input class="phone" type="number"> <p>驗證碼:</p> <input type="number" name="" id=""> <input type="button" value="獲取驗證碼" name="yzm" class="yzm" disabled="disabled"> <br><br> <input type="submit" value="提交"> </div>
頁面如圖:
網站
在輸入正確格式的手機號碼後,獲取驗證碼按鈕取消禁用狀態,可點擊.ui
點擊後按鈕再次進入禁用狀態並開始倒計時,倒計時完畢後再次進入可點擊狀態.this
具體實現流程仍是比較簡單的.代碼以下:
$(document).ready(function(){ var ordertime=20 //設置再次發送驗證碼等待時間 var timeleft=ordertime var btn=$(".yzm") var phone=$(".phone") var reg = /^1[0-9]{10}$/; //電話號碼的正則匹配式 phone.keyup(function(){ if (reg.test(phone.val())){ btn.removeAttr("disabled") //當號碼符合規則後發送驗證碼按鈕可點擊 } else{ btn.attr("disabled",true) } }) //計時函數 function timeCount(){ timeleft-=1 if (timeleft>0){ btn.val(timeleft+" 秒後重發"); setTimeout(timeCount,1000) } else { btn.val("從新發送"); timeleft=ordertime //重置等待時間 btn.removeAttr("disabled"); } } //事件處理函數 btn.on("click",function(){ $(this).attr("disabled",true); //防止屢次點擊 //此處可添加 ajax請求 向後臺發送 獲取驗證碼請求 timeCount(this); }) })
ajax請求格式大概以下,能夠用於向服務器請求發送驗證碼到制定手機
$.ajax({
type: "POST", //用POST方式傳輸
dataType: "text", //數據格式:JSON
url: 'Login.ashx', //目標地址
data: "dealType=" + dealType +"&uid=" + uid + "&code=" + code, //post攜帶數據
error: function () { }, //請求錯誤時的處理函數
success: function (){ }, //請求成功時執行的函數
});
另外在實際開發中,還須要有與服務器驗證用戶填寫驗證碼是否正確的ajax請求等,再加上使用cookie防止刷新頁面致使倒計時失效的代碼,實際開發的代碼量會比上面多不少.
可是隻要咱們掌握基本原理和實現思路,就能夠很容易的實現項目要求.
但願這篇文章對你有幫助.