2013-04-04 32 views
1

我的Javascript验证未激活时出现问题。我在这个HTML表单上也有一个PHP邮件程序,一旦按下提交,它就提交表单并且不进行验证。JavaScript验证不激活可能是由于HTML邮件上的PHP邮件

下面是HTML形式的代码:

<form name="contact" action="mailer.php" onsubmit="return ValidateForm()" method="post"><fieldset> 

<tr><td><label for="name">Name:</label></td> 
<td><input type="text" name="name" id="name" placeholder="Enter your full name" /> 
</td></tr> 

<tr><td><label for="email">Email:</label></td> 
<td><input type="email" name="email" id="email" placeholder="Enter your email address" /> 
</td></tr> 

<tr><td><label for="tel">Phone:</label></td> 
<td><input type="tel" name="tel" id="tel" placeholder="Enter your phone number" /> 
</td></tr> 

<tr><td><label for="message">Message:</label></td> 
<td><textarea id="message" name="message" placeholder=""></textarea> 
</td></tr> 

<tr><td><input type="submit" value="Submit" name="submit" /> 
</form> 

下面是PHP邮包的代码:

<?php 
if(isset($_POST['submit'])) { 
$to = "[email protected]"; 
$subject = "Subject"; 
$name_field = $_POST['name']; 
$email_field = $_POST['email']; 
$tel_field = $_POST ['tel']; 
$message = $_POST['message']; 

$body = "From: $name_field\n E-Mail: $email_field\n Phone: $tel_field\n Message:\n $message"; 


mail($to, $subject, $body, "From: $email_field"); 
echo "Data has been submitted to $to!"; 
echo "<a href='index.html'>Go back to Home Page</a>"; 
} else { 
echo "error"; 
} 
?> 

下面是验证的代码:

<script type="text/javascript"> 

{function validateForm() 
{ 
var x=document.forms["contact"]["name"].value; 
if (x==null || x=="") 
    { 
    alert("Name field must be filled out"); 
    return false; 
    } 

    var x=document.forms["contact"]["email"].value; 
var atpos=x.indexOf("@"); 
var dotpos=x.lastIndexOf("."); 
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
    { 
    alert("Not a valid e-mail address"); 
    return false; 
    } 

var x=document.forms["contact"]["tel"].value; 
if (y==null || y=="") 
    { 
    alert("Phone number must be provided"); 
    return false; 
    } 

    var x=document.forms["contact"]["message"].value; 
if (x==null || x=="") 
    { 
    alert("You have not entered a message"); 
    return false; 
    } 

    </script> 

我已经尝试把JavaScript验证器作为一个单独的文件在服务器或脚本本身的形式HTML文档似乎并不奏效。我做了很多搜索并检查了代码,并且非常确定它是正确的,但无法找到任何可以说明这两个函数是否可以一起使用的内容。如果有人可以确认它会很棒!

任何意见将不胜感激!

在此先感谢!

卡兹

+0

什么时候validateForm()被调用? – 2013-04-04 10:37:24

+0

是否有任何javascript错误?您可以在Chrome浏览器或Firebug调试器中捕获它们... – Svetoslav 2013-04-04 10:37:25

+0

向我们展示

开放标记以及... – 2013-04-04 10:39:22

回答

1

在你onSubmit您呼叫return ValidateForm()时,你应该做return validateForm()用小写的“V”。还有一些人:

{function validateForm()应该function validateForm()

你永远if语句后关闭左括号的功能。

<form name="contact" action="mailer.php" onsubmit="return validateForm()" method="post"> 

然后:

function validateForm() { 
    var x = document.forms["contact"]["name"].value; 
    if (x == null || x == "") { 
     alert("Name field must be filled out"); 
     return false; 
    } 

    var x = document.forms["contact"]["email"].value; 
    var atpos = x.indexOf("@"); 
    var dotpos = x.lastIndexOf("."); 
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) { 
     alert("Not a valid e-mail address"); 
     return false; 
    } 

    var x = document.forms["contact"]["tel"].value; 
    if (y == null || y == "") { 
     alert("Phone number must be provided"); 
     return false; 
    } 

    var x = document.forms["contact"]["message"].value; 
    if (x == null || x == "") { 
     alert("You have not entered a message"); 
     return false; 
    } 
} 
+0

这是小写,直到我读到其他地方,通过改变大写解决了。 >。<我已经尝试了这两种方法,都没有工作。 我刚刚读完你写的关于不关闭大括号的第二条评论。这与我的代码刚刚重新格式化一样。 所以很不幸,这并不能解决问题。 – kazie151 2013-04-04 11:17:20

+0

@ kazie151如果你发布的是你的代码,那么你的代码是错误的,它需要改变。我上面发布的东西,工作。你承认它是相同的(不关闭功能大括号),但你说它不会解决问题?如果你不关闭大括号,它会导致错误,你不会得到你想要的结果 – 2013-04-04 11:19:20

+0

我道歉我看你写错了什么。这是漫长的一天,我现在头痛得厉害。是的,工作。非常感谢! :) – kazie151 2013-04-04 12:03:49