HTML表单使用JS来验证电子邮件,验证工作但表单仍然提交

时间:2011-12-12 16:08:22

标签: php javascript html

我正在尝试验证使用php将表单信息发送到一组电子邮件的表单的电子邮件字段。我正在使用Javascript验证电子邮件,它正在运行。

问题是,即使在验证返回false之后,表单仍处理信息并发送电子邮件,我会喜欢一些指导,因为我找不到我正在制作的错误。

以下是我用于表单的HTML代码:

            <form id="formulario-submit" onsubmit="return Validacion();" action="procesarsolicitud.php" method="POST">
            <table border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td>
                        <input   type="text" value="Nombre*" id="nombre" name="nombre" onclick='this.value = "";'>
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="text" value="Apellido*" id="apellido" name="apellido" onclick='this.value = "";'>
                    </td>
                </tr>

                <tr>
                    <td>
                        <!--<input type="submit" value="Enviar" id="enviar" alt="enviar">-->

                        <button name="enviar" value="Submit" type="submit" id="enviar" alt="enviar" width="100">

这是我用来验证电子邮件的JS代码:

    <script>
function Validacion()
{
var x=document.forms["formulario-submit"]["email"].value;
var arroba=x.indexOf("@");
var punto=x.lastIndexOf(".");
if (arroba<1 || punto<arroba+2 || punto+2>=x.length)
 {
  alert("Not a valid Email.");
  email.focus();
  return false;
 }
}
</script>

这是PHP代码(在一个名为procesarsolicitud.php的单独PHP文件中)我用来处理数据并发送电子邮件:

$nombre = $_POST['nombre'];
$apellido = $_POST['apellido'];    
    $email = $_POST['email'];
    $message = '
    <html>
    <head>
      <title></title>
    </head>
    <body>
      <h3>Form Data::</h3>
        <tr>
          <td width="200"><b>Nombre:</b></td>
          <td>'.$nombre.'</td>
        </tr>
        <tr>
          <td width="200"><b>Apellido:</b></td>
          <td>'.$apellido.'</td>
        </tr>
        <tr>
          <td width="200"><b>Email:</b></td>
          <td>'.$email.'</td>
        </tr>                                  
        <tr>
        </tr>                                                                                           
      </table><br />

    </body>
    </html>
    ';

    // multiple recipients

    $to='email1@email.com,email2@email.com';

    // subject
    $subject = ' Email Subject';

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n".
    'From: Email <info@email.com>' . "\r\n";
    echo "MessageExample";



    // Mail it
    mail($to, $subject, $message, $headers);       

提前致谢。

1 个答案:

答案 0 :(得分:0)

您不应该首先使用JS来验证表单。确切地说..如果你这样做,你还必须检查输入服务器端(你也可以使用AJAX调用来验证服务器端的表单,然后你可以重用相同的清理器/验证器)。

关于您的具体问题,SOF&#34;提出问题&#34;不是搜索引擎。在提出问题之前,你应该投入一些时间。您的问题已被提出(例如,Google提供的第一个结果&#34; onsubmit表单返回false&#34; http://webdeveloper.com/forum/showthread.php?t=175736; SOF onSubmit returning false is not working的第一个结果)多次。

P.S。如果有任何错误,请检查控制台(参见Firebug以获取更多信息)。