[英]How do I make this javascript validation work?
在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函數啟動異步get請求並立即返回。 get完成后調用finalFlash,但與validateUser的返回值無關。
請參閱如何讓jQuery執行同步而非異步的Ajax請求? 如何將其轉換為同步請求。
希望這段代碼可以幫到你
<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()
{
validateUser();
}
function validateAll(chump){
var items = [validateRecipient(), validateMessage()];
for (var i in items)
{
var item = items[i];
item
}
if (validateRecipient() && validateMessage() && chump)
{
return true;
}
return false;
}
function validateUser(){
$.get("/trivia/xhr_test/",
{
username: document.messageForm.recipient.value
},
function(data){
validateAll(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方法上調用了ajax,並且你已經調用了兩次。 每次激活ajax請求時,它都將異步執行,其余代碼永遠不會等待ajax調用完成。 所以我做了必要的更改,允許代碼在完成ajax請求后執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.