2015-09-27 105 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

相關問題