javascript if-then-else的最佳代码实践

时间:2014-01-09 21:27:14

标签: javascript jquery if-statement

我正在寻找javascript和jquery专家,让我走上正确的道路。我有以下代码,我注意到在函数完成之前,代码通过focus()并返回false;一旦函数返回false,就会再次出现;有人会告诉我编写此代码的正确方法。谢谢!

// validate passwords
if(!VerifyPassword($("#CurrentPassword").val())) {
    $("#CurrentPassword").focus();
    return false;
}
if($("#NewPassword").val() != "") { 
    if(!ValidatePassword($("#NewPassword").val())) {
        $("#NewPassword").focus();
        return false;
    }
    if($("#NewPassword").val() != $("#RetypePassword").val()) {
        alert("The new password is not the same as the retyped password");
        return false;
    }
}

function ValidatePassword(password) {

    if(password.length < 6) { 
        alert("Password must contain at least six characters!"); 
        return false; 
    } 

    re = /[0-9]/; 
    if(!re.test(password)) { 
        alert("Password must contain at least one number (0-9)!"); 
        return false; 
    } 

    re = /[a-z]/; 
    if(!re.test(password)) { 
        alert("Password must contain at least one lowercase letter (a-z)!"); 
        return false; 
    } 

    re = /[A-Z]/; 
    if(!re.test(password)) { 
        alert("Password must contain at least one uppercase letter (A-Z)!"); 
        return false; 
    }

    return true;
}

function VerifyPassword(password) {

    urlString = "../sql/db_verify_password.php?Password=" + password;

    /* send calendar updated information and return status message */
    $.ajax({
        type: "GET",
        url:  urlString,
        dataType: "xml",
        success: function(xml) {
            $(xml).find('Results').each(function() {
                var status = $(this).find('Status').text();

                if(status != "OK") { 
                    alert(status);
                    return false;
                }
            });
        } 
    });
}

1 个答案:

答案 0 :(得分:0)

让我们看看代码中会发生什么!

您先致电

VerifyPassword($("#CurrentPassword").val())

导致

$.ajax({
    //content omitted
});

现在,ajax中的第一个a代表异步。这意味着将对其他资源进行请求,但您不会等到请求完成后(如果您等待,则将其称为同步)。 相反,您的代码继续执行,将焦点设置在输入上并返回false。 最后,当请求完成并返回时,将执行您在success:中指定的功能!

知道这一点你想在success:

中指定的功能中改变焦点