風(fēng)信建站項目開發(fā)中應(yīng)用到發(fā)送手機(jī)短信進(jìn)行驗(yàn)證的功能性開發(fā),為提升用戶的體驗(yàn),一般會在發(fā)送驗(yàn)證碼之后,按鈕處理禁用狀態(tài),并開始進(jìn)入倒計時,倒計時結(jié)速之后用戶才可以再次發(fā)送驗(yàn)證碼,這種交互式的功能對于新注冊用戶是非常有用的,能有效的提升用戶的注冊體驗(yàn),今天風(fēng)信建站將此功能代碼分享給大家:
說明:采用Ajax進(jìn)行數(shù)據(jù)驗(yàn)證,并加了一下定時器在html結(jié)構(gòu)中進(jìn)行倒計時。
說明:采用Ajax進(jìn)行數(shù)據(jù)驗(yàn)證,并加了一下定時器在html結(jié)構(gòu)中進(jìn)行倒計時。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="HTML/js/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
var InterValObj; //timer變量,控制時間
var count = 5; //間隔函數(shù),1秒執(zhí)行
var curCount;//當(dāng)前剩余秒數(shù)
function sendMessage() {
curCount = count;
//設(shè)置button效果,開始計時
$("#btnSendCode").attr("disabled", "true");
$("#btnSendCode").val("請在" + curCount + "秒內(nèi)輸入驗(yàn)證碼");
InterValObj = window.setInterval(SetRemainTime, 1000); //啟動計時器,1秒執(zhí)行一次
//向后臺發(fā)送處理數(shù)據(jù)
$.ajax({
type: "POST", //用POST方式傳輸
dataType: "text", //數(shù)據(jù)格式:JSON
url: 'Login.php', //目標(biāo)地址
data: "dealType=" + dealType +"&uid=" + uid + "&code=" + code,
error: function (XMLHttpRequest, textStatus, errorThrown) { },
success: function (msg){ }
});
}
//timer處理函數(shù)
function SetRemainTime() {
if (curCount == 0) {
window.clearInterval(InterValObj);//停止計時器
$("#btnSendCode").removeAttr("disabled");//啟用按鈕
$("#btnSendCode").val("重新發(fā)送驗(yàn)證碼");
}
else {
curCount--;
$("#btnSendCode").val("請在" + curCount + "秒內(nèi)輸入驗(yàn)證碼");
}
}
</script>
</head>
<body>
<input id="btnSendCode" type="button" value="發(fā)送驗(yàn)證碼" onclick="sendMessage()" /></p>
</body>
</html>