我正在寻找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;
}
});
}
});
}
答案 0 :(得分:0)
让我们看看代码中会发生什么!
您先致电
VerifyPassword($("#CurrentPassword").val())
导致
$.ajax({
//content omitted
});
现在,ajax中的第一个a
代表异步。这意味着将对其他资源进行请求,但您不会等到请求完成后(如果您等待,则将其称为同步)。
相反,您的代码继续执行,将焦点设置在输入上并返回false。
最后,当请求完成并返回时,将执行您在success:
中指定的功能!
知道这一点你想在success:
: