javascript - 函數傳回非同步事件所得到的結果
三叔
三叔 2017-06-26 10:56:37
0
2
660

在做一個手機取得驗證碼的邏輯:

#我的解決方法如下:

    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
    }
    

但是這樣會使方法又執行一次。所以想知道是否有更好的辦法?

三叔
三叔

全部回覆(2)
淡淡烟草味

1.blur事件觸發時,應該先檢驗手機號碼是否正確,正確再發送請求,檢查手機號碼是否有註冊過,這樣節省一點請求數。不然只輸入三位數都發送請求了。
2.請求回來,如果發現手機號碼已經註冊過了,點擊按鈕不發送請求,給個提示,或者讓按鈕不可點擊的狀態。
3.等到手機號碼確認了沒有註冊過,驗證碼也填寫完畢並且驗證正確了,點擊按鈕,就直接發送請求就好了。這時候不需要驗證了。因為在blur事件觸發時已經驗證了!

给我你的怀抱

寫到cookie裡面, cookie沒有的話 就執行下

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!