javascript - 我如何使这个 javascript 验证工作?

标签 javascript jquery ajax

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/

相关文章:

javascript - 如何从 CSS 选择器中提取类名?

javascript - 您使用 VS 2008 采取了哪些步骤来减少使用 Javascript 的开发时间?

javascript - 在 onClick 函数中传递输入文本框值 - php

javascript - 无法从日期时间选择器中获取值以通过 AJAX 发送

javascript - 在 IE6 中伪造固定位置

javascript - Chrome API 未定义

javascript - 如果未选中复选框,如何禁用按钮

jquery - 如何使用jquery更改类名?

ajax - 如何使用 ajaxStart 显示加载微调器?

php - jQuery 函数动态加载更多数据