2010-10-03 46 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

相关问题