2013-04-29 60 views
-1

當我點擊提交按鈕時,它只是加載下一頁,而不是運行JavaScript代碼。Javascript表單驗證不被稱爲

這是我的javascript代碼:

function Validate(thisForm) 
    { 
     alert("started"); 
     var username22 = document.thisForm.getElementById('username'); 
     var password22 = document.thisForm.getElementById('password'); 
     var password222 = document.thisForm.getElementById('password2'); 
     var email22 = document.thisForm.getElementById('email'); 
     var email222 = document.thisForm.getElementById('email2'); 
     var legalcheck22 = document.thisForm.getElementById('legal'); 
     alert("started 2"); 
     if(username22.value == "") 
     { 
      alert("Please enter a username."); 
      focus.username22; 
      return false; 
     } 
     alert("started 3"); 
     if(password22.value.length < 5) 
     { 
      alert("Password needs to be at least 5 characters long."); 
      focus.password22; 
      return false; 
     } 
     alert("started 4"); 
     if(password22.value != password2.value) 
     { 
      alert("Passwords don't match."); 
      focus.password22; 
      return false; 
     } 
     alert("started 5"); 
     if(email22.value == "") 
     { 
      alert("Please enter an email."); 
      focus.email22; 
      return false; 
     } 
     alert("started 6"); 
     if(email222.value == "") 
     { 
      alert("Please confirm your email."); 
      focus.email222; 
      return false; 
     } 
     alert("started 7"); 
     if(email22.value != email222.value) 
     { 
      alert("Emails don't match."); 
      focus.email22; 
      return false; 
     } 
     if(legalcheck22.checked == false) 
     { 
      alert("You need to agree to our Terms and Conditions."); 
      focus.legalcheck22; 
      return false; 
     } 
     alert("pass"); 
     return true; 
    } 

這是我的形式

<div class="formLayout"> 
     <form id="registerForm" name="registerForm" method="post" onsubmit="return Validate(registerForm)" action="register.php" > 
      <h3 class="centeredText">Register Account</h3> 
      <p> 
      <label>Username</label> 
      <input name="username" id="username" /> 
      <br /> 
      <label>Password</label> 
      <input name="password" type="password" id="password" /> 
      <br /> 
      <label>Confirm Passwrd</label> 
      <input name="password2" type="password" id="password2" /> 
      <br /> 
      <label>Email</label> 
      <input name="email" id="email" /> 
      <br /> 
      <label>Confirm Email</label> 
      <input name="email2" id="email2" /> 
      <br /> 
      <label>Captcha</label> 
      <input id="captcha" /> 
      </p> 
<p>&nbsp;</p> 
      <div id="centerButtons"> 
      <input type="submit" name="register" id="register" value="Register" /> 
      <input type="reset" name="register2" id="register2" value="Reset" /> 
      <p>&nbsp;</p> 
      </div> 
      <!-- end of centerButtons--> 
      <p> 
      <input type="checkbox" name="legal" id="legal" /> 
      <label for="legal">I agree to the <a href="terms.html">Terms and Conditions</a>.</label> 
      </p> 
      <p>&nbsp;</p> 
      <p>&nbsp;</p> 
</form> 
    </div> 
    <!-- end of formLayout div--> 

我不知道爲什麼在頁面加載保持在JavaScript代碼開始。它設法顯示第一個警報(「已啓動」),然後重新加載頁面。你能幫我解決嗎?謝謝

+0

你知道什麼是有趣的,你寫了所有這些(我懷疑它),你甚至沒有測試它,如果它工作或不? – gdoron 2013-04-29 21:01:23

+0

我是從頭開始寫的,我怎麼沒有測試過它?我顯然在這裏張貼,因爲它不起作用。 – 2013-04-29 21:03:17

+0

您的'

回答

1

getElementByIddocument對象的屬性,而不是所有Element對象的屬性。

var username22 = document.thisForm.getElementById('username');會拋出異常,殺死JS,並允許表單提交繼續正常。

+0

謝謝你,讓我朝着正確的方向前進。它現在工作:) – 2013-04-29 21:10:28