Javascript函数从HTML事件运行,但从IF语句失败
我在单击关闭用户名输入时运行了此功能:Javascript函数从HTML事件运行,但从IF语句失败,javascript,html,Javascript,Html,我在单击关闭用户名输入时运行了此功能: function checkUsername(){ if($("#signupUsername").val()!=""){ $.post("checkUsername.php",$("#signupForm :input").serializeArray(),function(data){ if(data){ $("#signupUsernameOutput").text("U
function checkUsername(){
if($("#signupUsername").val()!=""){
$.post("checkUsername.php",$("#signupForm :input").serializeArray(),function(data){
if(data){
$("#signupUsernameOutput").text("Username Taken");
$("#signupUsernameOutput").css("color","#CE0000");
return false;
}
else{
$("#signupUsernameOutput").text("Username OK");
$("#signupUsernameOutput").css("color","green");
return true;
}
});
}
else{
$("#signupUsernameOutput").text("");
return false;
}
}
使用:
<input type="text" class="form-control" onblur="checkUsername()" placeholder="Username" name="signupUsername" id="signupUsername">
您正在调用的函数发送一个异步AJAX请求。那是行不通的。它将准备好AJAX请求,然后返回
未定义的
,在任何情况下都不会返回true
您可能需要考虑更改代码,并为“承诺”添加代码 除了您忘记了一个
)
之外,当$.post()
完成时执行的函数是异步的,因此在您调用checkUsername
时,完成函数尚未启动。此外,您将向该函数返回true
或false
,而不是checkUsername
。简而言之,所有事情都必须在完成函数中发生,返回任何东西都没有任何好处。但是,您可以在完成函数中更改HTML。您缺少一个)
。这是在您的原始代码中还是仅仅是一个复制错误?Barmar指出有一个复制错误,我已经纠正了。粘贴到这里时,您怎么会不小心从代码中间删除一个括号?如果(checkUsername()==true)equals是多余的:)这只是代码风格的建议。
if(checkUsername()==true){
alert("success!");
//and some other stuff...
}