2010-10-03 43 views
0

我想驗證一個表單,但不起作用:\,當我提交表單到mail.php即使所需的字段丟失,但我設置onsubmitvalidate()所以它應該檢查,但doesn沒有工作。我的代碼有什麼問題?我找不到它。爲什麼我的表單不能正確驗證?

HTML:

<form action="mail.php" onsubmit="return validate()" method="post" class="contact-form" id="contactForm"> 

    <div id="errors"></div> 

    <label for="author">Name:</label><br/><br/> 

    <input type="text" name="author" id="message" /><br/><br/> 

    <label for="author">Message:</label><br/><br/> 

    <textarea name="message" id="message"></textarea><br/><br/> 

    <input type="submit" class="button" value="Send Message"/> 

</form> 

的Javascript:

<script type="text/javascript"> 
    function error(message){ 
     return "<p class=\"error\">"+message+"</p>"; 
    } 

    function validate(){ 
     var form  = document.getElementById("contactForm"); 
     var author  = document.getElementById("author"); 
     var message = document.getElementById("messsage"); 
     var errors = document.getElementById("errors"); 
     alert(author.value); 
     if(message.value == '' || author.value == ''){ 
      errors.innerHTML = error("Please fill in all fields."); 
      return false; 
     } else { 
      return true; 
     } 

    } 
</script> 
+1

您絕不應該依賴客戶端驗證(即通過JS進行驗證,而無需在服務器端進行等效驗證)。遇到一個用戶,無論出於何種原因都沒有啓用JS,那麼很容易,然後進行驗證。 – 2010-10-03 19:44:42

+0

夥計們我修復了HTML錯誤,現在我的文檔是有效的,但它仍然無效。 – Adam 2010-10-03 19:49:12

回答

2
var message = document.getElementById("messsage"); 

消息有一個額外的「s」。

<input type="text" name="author" id="message" /> 

你需要改變 「消息」 以 「作者」

+0

嘿!謝謝我解決了它,但仍然不起作用:O – Adam 2010-10-03 19:44:35

+0

它在這裏爲我工作:http://jsfiddle.net/5wTY6/ – mcrumley 2010-10-03 19:55:43

+0

嗯,謝謝!我解決了它,問題出在's'上:D sry – Adam 2010-10-03 20:02:58

3

ID =您的第一輸入元件上的作者。

還檢查了jQuery的將時間節省你從長遠來看

1

這是錯誤的:

<input type="text" name="author" id="message" /> 

需要設置nameid爲相同的值(你使用id="message"爲下一場,所以有衝突

還兼具您label標籤有for="author";第二個是WR翁。

我想你的問題在這裏是太多的複製+粘貼。 ;)

+1

您不需要將'name'和'id'設置爲相同的值(實際上,在處理收音機組時 - 不能,因爲那麼你必須有多個具有相同名稱的元素) – Quentin 2010-10-03 19:45:21

相關問題