2015-09-27 99 views
0

我正在学习PHP,JavaScript。下面的代码来自我正在使用的教科书。不知道为什么我会收到警报! 'undefined'消息

<script> 
function validate(form) 
    { 
    fail = validateForename(form.forename.value) 
    fail += validateSurname(form.surname.value) 
    fail += validateUsername(form.username.value) 
    fail += validatePassword(form.password.value) 
    fail += validateAge(form.age.value) 
    fail += validateEmail(form.email.value) 

    if (fail == "") return true 
    else { alert(fail); return false } 
    } 
<body> 

<table border="0" cellpadding="2" cellspacing="5" bgcolor="#eeeeee"> 
    <th colspan="2" align="center">Signup Form</th> 
    <form method="post" action="adduser387.php" onSubmit="return  validate(this)"> 
<tr><td>Forename</td> .... 

的验证功能工作。当所有的字段都被验证并且我'提交'时,逻辑会落到'else {alert(fail);返回false}'给我一个'未定义'的消息 - 不知道为什么。如果我提供的信息不足,请告诉我。我无法在互联网上找到答案。谢谢。

+0

请妥善 – manonthemat

+0

格式化你的代码定义'失败=“”'在函数的beginnig'validate'因为'警报(未定义==“” )'会返回false' – Rayon

+0

其他函数是如何定义的?他们可以返回哪些可能的值被分配或添加到“失败”?他们在所有情况下都会“返还”价值吗? –

回答

0

js功能必须是这样的:

function validate(form) { 
     var fail = ''; 
     fail += validateForename(form.forename.value); 
     fail += validateSurname(form.surname.value); 
     fail += validateUsername(form.username.value); 
     fail += validatePassword(form.password.value); 
     fail += validateAge(form.age.value); 
     fail += validateEmail(form.email.value); 

     if (fail == "") { 
      return true; 
     } 
     else { 
      alert(fail); 
      return false 
     } 
    } 

问题与你的脚本是fail没有定义任何地方,因此它的值是undefined(不考虑你的申请验证函数返回值),因此值如果fail == ""永远不会是true,因为undefined不等于'',这就是为什么你的其他条件得到满足。由于存在failundefined价值,你得到警报后undefined

+0

@JonathanLonowski,你说得对。 – Rayon

+0

我通过评论代码的'alert'部分来欺骗我,并且它工作正常。但是,这不是一个解决方案。明天我会尝试你的建议。现在是凌晨1:45。感谢所有的帮助。 JOHND – johnD

相关问题