在做一個手機取得驗證碼的邏輯:
#我的解決方法如下:
function validateaccount() {
var account = $("#account").val();
var flag = false; // 设定一个flag判断是否注册
if (account) {
//验证登录名是否存在
$.ajax({
url:'/sso/validateaccount.do',
data : {
account : account,
accountType : ${accountType}
},
type:'POST',
async:false,
success:function(data){
data = $BySlin.strToJson(data);
if (data.code == ${my:obtain('HTTP', 'SUCCESS')}) {
if (data.data.validateMsg) {
$("#accountErrorMsg").html(data.data.validateMsg);
} else {
$("#accountErrorMsg").html("");
flag = true;
}
} else {
$("#accountErrorMsg").html("账号校验失败,请重试");
flag = false;
}
}
});
return flag; // 函数返回该flag给其他方法做判断
} else {
layer.open({
content: '请先输入您的账号',
skin: 'msg',
time: 2
});
}
}
然後其他方法呼叫該方法以取得是否註冊的判斷結果:
function sendMsg() {
debugger
var validateaccountStatus = validateaccount();
if (!validateaccountStatus) {
return;
}
xxxxxxxxx
}
但是這樣會使方法又執行一次。所以想知道是否有更好的辦法?
1.
blur
事件觸發時,應該先檢驗手機號碼是否正確,正確再發送請求,檢查手機號碼是否有註冊過,這樣節省一點請求數。不然只輸入三位數都發送請求了。2.請求回來,如果發現手機號碼已經註冊過了,點擊按鈕不發送請求,給個提示,或者讓按鈕不可點擊的狀態。
3.等到手機號碼確認了沒有註冊過,驗證碼也填寫完畢並且驗證正確了,點擊按鈕,就直接發送請求就好了。這時候不需要驗證了。因為在
blur
事件觸發時已經驗證了!寫到cookie裡面, cookie沒有的話 就執行下