javascript - 函數(shù)返回異步事件得到的結(jié)果
問題描述
在做一個手機(jī)獲取驗(yàn)證碼的邏輯:
我的解決辦法如下:
function validateaccount() {var account = $('#account').val();var flag = false; // 設(shè)定一個flag判斷是否注冊if (account) { //驗(yàn)證登錄名是否存在 $.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('賬號校驗(yàn)失敗,請重試');flag = false; }} }); return flag; // 函數(shù)返回該flag給其他方法做判斷} else { layer.open({content: ’請先輸入您的賬號’,skin: ’msg’,time: 2 });} }
然后其他方法調(diào)用該方法以獲取是否注冊的判斷結(jié)果:
function sendMsg() {debuggervar validateaccountStatus = validateaccount();if (!validateaccountStatus) { return;}xxxxxxxxx }
但是這樣會使方法又執(zhí)行一遍。所以想知道是否有更好的辦法?
問題解答
回答1:1.blur事件觸發(fā)時,應(yīng)該先檢驗(yàn)手機(jī)號碼是否正確,正確再發(fā)送請求,檢查手機(jī)號是否有注冊過,這樣節(jié)省一點(diǎn)請求數(shù)。不然只輸入三位數(shù)都發(fā)送請求了。2.請求回來,如果發(fā)現(xiàn)手機(jī)號已經(jīng)注冊過了,點(diǎn)擊按鈕不發(fā)送請求,給個提示,或者讓按鈕不可點(diǎn)擊的狀態(tài)。3.等到手機(jī)號確認(rèn)了沒有注冊過,驗(yàn)證碼也填寫完畢并且驗(yàn)證正確了,點(diǎn)擊按鈕,就直接發(fā)送請求就好了。這個時候不需要驗(yàn)證了。因?yàn)樵赽lur事件觸發(fā)時已經(jīng)驗(yàn)證了!
回答2:寫到cookie里面, cookie沒有的話 就執(zhí)行下
相關(guān)文章:
1. mysql - AttributeError: ’module’ object has no attribute ’MatchType’2. php自學(xué)從哪里開始?3. javascript - 百度echarts series數(shù)據(jù)更新問題4. MySQL客戶端吃掉了SQL注解?5. 求大神幫我看看是哪里寫錯了 感謝細(xì)心解答6. javascript - JS設(shè)置Video視頻對象的currentTime時出現(xiàn)了問題,IE,Edge,火狐,都可以設(shè)置,反而chrom卻...7. javascript - 圖片能在網(wǎng)站顯示,但控制臺仍舊報(bào)錯403 (Forbidden)8. python小白的基礎(chǔ)問題 關(guān)于while循環(huán)的嵌套9. phpstady在win10上運(yùn)行10. python - Django分頁和查詢參數(shù)的問題
