在 validateMail()
下,变量 chump
返回 undefined
,但它应该是 true 或 false 值。
我不明白,因为 finalFlash()
的两个条件语句下的 alert()
语句工作正常,我在那里得到一个 true 或 false 值。
<script>
function validateRecipient()
{
var recipient=document.messageForm.recipient.value;
if (recipient==null || recipient=="")
{
document.getElementById("recipientError").innerHTML='<div style="font-size:13px; color:#b94a48; clear:both">Please enter a username</div>';
document.getElementById("recipient_error").className="control-group error";
return false;
}
else
{
document.getElementById("recipientError").innerHTML="";
document.getElementById("recipient_error").className="control-group";
return true;
}
}
function validateMessage()
{
var message=document.messageForm.message.value;
if (message==null || message=="")
{
document.getElementById("messageError").innerHTML='<div style="font-size:13px; color:#b94a48; clear:both">Please enter a message</div>';
document.getElementById("message_error").className="control-group error";
return false;
}
else
{
document.getElementById("messageError").innerHTML="";
document.getElementById("message_error").className="control-group";
return true;
}
}
function validateMail()
{
var items = [validateRecipient(), validateMessage(), validateUser()];
var chump = validateUser()
alert(chump)
for (var i in items)
{
var item = items[i];
item
}
if (validateRecipient() && validateMessage() && validateUser())
{
return true;
}
return false;
}
function validateUser(){
$.get("/trivia/xhr_test/",
{
username: document.messageForm.recipient.value
},
function(data){
return finalFlash(data); // edit suggested by Aamir Adnan
});
}
function finalFlash(data){
if (data == "True")
{
document.getElementById("recipientError").innerHTML="";
document.getElementById("recipient_error").className="control-group";
alert(true)
return true
}
else if (data != null && data != "" && data == "False")
{
document.getElementById("recipientError").innerHTML='<div style="font-size:13px; color:#b94a48; clear:both">That username does not exist</div>';
document.getElementById("recipient_error").className="control-group error";
alert(false)
return false
}
}
</script>
最佳答案
您的 validateUser 函数启动异步获取请求并立即返回。 FinalFlash在get完成时被调用,与validateUser的返回值无关。
参见How can I get jQuery to perform a synchronous, rather than asynchronous, Ajax request?了解如何将其转换为同步请求。
关于javascript - 我如何使这个 javascript 验证工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100028/