使用者登入,實現傳送手機驗證碼。
傳送手機驗證碼,要求具有如下功能需求、業務邏輯:
(1)、使用者輸入手機號,當輸入的手機號碼為空時,提示,並且要求使用者輸入手機號;
(2)、傳送手機號碼後,button按鈕,自動變為不可點選,然後60秒倒計時;
(3)、後臺成功傳送驗證碼給手機;
(4)、使用者輸入驗證碼,後臺判斷驗證碼是否正確。
現在逐一實現:
(1)、使用者輸入手機號,當輸入的手機號碼為空時,提示,並且要求使用者輸入手機號;
<td width="60%">
<input id="user_sn" class="registerInput" name="user_sn" type="text" maxlength="50" value="" onkeyup="showContent(this,event,'zTree','dictSn',true,true);" autocomplete="off" />
<br/><span class="grey2">使用者名稱可為手機號</span></td>
<td align="right">驗證碼<br /> <span class="grey2">( captcha )</span><br /></td>
<td>
<input type="text" class="left" style="width:80px;height:30px;border-right:none;" name="code" id="code"/><input name="input3" id="code_button" class="font14 left" style="background:#f2f2f2;width:120px;height;30px;line-height:30px;"
type="button" onclick="getCode(this);" value="免費獲取驗證碼"/>
<input type="hidden" class="registerInput" name="code_value" id="code_value"/>
<br/>
<span class="grey2">直接發到手機或者是郵箱</span></td>
判斷手機號碼是否為空:function getCode(obj){-
var user_sn=document.getElementById('user_sn').value;
if('' == user_sn){
$.jBox.info('請輸入使用者名稱!', '提示');
document.getElementById('user_sn').focus();
}}
(2)、傳送手機號碼後,button按鈕,自動變為不可點選,然後60秒倒計時;
<input type="text" class="left" style="width:80px;height:30px;border-right:none;" name="code" id="code"/><input name="input3" id="code_button" class="font14 left" style="background:#f2f2f2;width:120px;height;30px;line-height:30px;" type="button" onclick="getCode(this);" value="免費獲取驗證碼"/>
<input type="text" class="left" style="width:80px;height:30px;border-right:none;" name="code" id="code"/><input name="input3" id="code_button" class="font14 left" style="background:#f2f2f2;width:120px;height;30px;line-height:30px;" type="button" onclick="getCode(this);"
value="免費獲取驗證碼"/>
<%-- 獲取驗證碼--%>
var wait=60;
var interValObj;
document.getElementById("code_button").disabled = false;
function getCode(obj){-
var user_sn=document.getElementById('user_sn').value;
if('' == user_sn){
$.jBox.info('請輸入使用者名稱!', '提示');
document.getElementById('user_sn').focus();
}else{
<%--設定button效果,開始計時 --%>
$("#code_button").attr("disabled", "true");
$("#code_button").val("倒計時 " + wait + " 秒");
interValObj = window.setInterval(setRemainTime, 1000); <%--啟動計時器,1秒執行一次 --%>
$.ajax({
type: "post",
dataType: "text",
url: '${webAppUrl}/cust/code.html?user_sn='+user_sn,
async:false,
success: function (msg){
if(!isNaN(msg)){
document.getElementById('code_value').value = msg;
}else{
$.jBox.info('資訊未傳送成功,請確認手機號碼或郵箱是否正確!!!', '提示');
}
}
});
}
}
<%--timer處理函式 --%>
function setRemainTime() {
if (wait == 0) {
window.clearInterval(interValObj);<%--//停止計時器 --%>
$("#code_button").removeAttr("disabled");<%--//啟用按鈕 --%>
$("#code_button").val("重新發送驗證碼");
document.getElementById('code_value').value = ''; <%--//清除驗證碼。如果不清除,過時間後,輸入收到的驗證碼依然有效 --%>
wait = 60;
}
else {
wait--;
$("#ait + " 秒");
}
}
(3)、後臺成功傳送驗證碼給手機;
3.1生成驗證碼:String code = " ";
Random random = new Random();
for(int i=0; i<6; i++){ //表示生成六位驗證碼
code += String.valueOf(random.nextInt(10)); // 採用隨機碼生成0-10(包括0,不包括10)的驗證碼,生成六次,構成六位數驗證碼;
}
3.2 生成驗證碼簡訊:
String result = SmsSendUtil.sendSms(user_name, "您好!請您將驗證碼:\""+code+"\"輸入在頁面上的\"驗證碼文字對話方塊\"進行驗證。謝謝!!!【中國成本管控網】");
//SmsSendUtil是一個包,裡面的方法sendSms,這個包我等會上傳到csdn資源裡面,就可以了。
3.3 返回code給jsp頁面:response.getWriter().print(code);
(4)、使用者輸入驗證碼,後臺判斷驗證碼是否正確。
$.ajax({
type: "post",
dataType: "text",
url: '${webAppUrl}/cust/code.html?user_sn='+user_sn,
async:false,
success: function (msg){ //返回msg也就是code(後臺傳送的驗證碼);
if(!isNaN(msg)){
document.getElementById('code_value').value = msg; //如果前臺輸入的code值,和後臺生成的code值相同,那麼驗證碼輸入成功。
}else{
$.jBox.info('資訊未傳送成功,請確認手機號碼或郵箱是否正確!!!', '提示');
}
}
});