2012-05-25 22 views
0

我有一個很直接的JavaScript表單驗證腳本編寫:Javascript表單驗證無效 - 腳本沒有被調用?

 function validateForm(){ 
     var x=document.forms["contactForm"]["firstname"].value; 
     if (x==null || x==""){ 
      return false; 
     } 

     var y=document.forms["contactForm"]["lastname"].value; 
     if (y==null || y==""){ 
      return false; 
     } 

     var z=document.forms["contactForm"]["emailaddress"].value; 
     var atpos=z.indexOf("@"); 
     var dotpos=z.lastIndexOf("."); 
     if (atpos<1 || dotpos<atpos+2 || dotpos+2>=z.length){ 
      return false; 
     } 
     var msg_area = document.getElementById("message"); 
     msg_area.innerHTML = ""; 
     if (document.getElementById("message").value.length < 20) { 
      return false; 
     } 
     else document.getElementById("contactForm").submit(); 
    } 

它應該可以驗證這種形式:

<form name="contactForm" onsubmit="return validateForm()" action="./thankyou.html" method="post"> 
     <label for="firstName">First Name <sup>*</sup></label> 
     <input name ="firstname" id="firstName" type="text" placeholder="First Name" required /> 
     <label for="lastName">Last Name <sup>*</sup></label> 
     <input name ="lastname" id="lastName" type="text" name="lastName" placeholder="Last Name" required /> 
     <label for="emailaddress">Email address <sup>*</sup></label> 
     <input name="emailaddress" id="emailAddress" type="email" placeholder="[email protected]" required /> 
     <label for="message">Message<sup>*</sup></label> 
     <textarea id="message" placeholder="Remember, be nice!" required></textarea> 
     <input type="submit" name="submit" value="Email Me!" class="emailsub" /> 
     <p class="small"><sup>*</sup> denotes a required field.</p> 
    </form> 

當它提交,它似乎並沒有實際調用所有的JavaScript。它唯一看起來就是它符合html的「必需」部分。我對JavaScript很新,所以它可能明顯地顯而易見地出現問題,但我無法自己找到它。

任何幫助非常感謝!

p.s.這是針對本地網站的,因此action =「」轉到另一個html而不是一個頁面來處理消息。這可能是問題嗎?

+1

你在控制檯遇到什麼錯誤? –

+1

這是一個錯字'document.getElementById(「message」).value.length''? –

+0

奇怪的是,我沒有在控制檯中看到任何錯誤。是的,那是一個錯字,對不起。 :/ – nerdarama

回答

0

html5「required」屬性告訴瀏覽器在繼續之前進行驗證,read more here。這意味着,除非它通過了基本驗證(必填字段和電子郵件),否則它甚至會在javascript函數被調用之前(在受支持的瀏覽器上)停止事件。

如果您希望JavaScript執行並執行您自己的驗證,則需要刪除「required」屬性。您也可以嘗試更復雜的HTML表單驗證。 Here is a good article on the subject.