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

HTML Form using JS to validate Email, Validation works but form still submits

本文关键字:表单 验证 提交 工作 电子邮件 JS HTML      更新时间:2023-09-26

我试图验证使用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代码(在一个单独的PHP文件procesarsolicitudd . 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);       

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

关于你的具体问题,SOF"问问题"不是一个搜索引擎。在提问之前,你应该花点时间仔细观察。你的问题已经被问到(例如,从谷歌的第一个结果"onsubmit表单返回false"http://webdeveloper.com/forum/showthread.php?t=175736;sofonsubmit的第一个结果返回false(不工作)。

注。如果有任何错误,请检查控制台(参考Firebug获取更多信息)。