用于表单验证的JavaScript desn';我好像没接到电话

用于表单验证的JavaScript desn';我好像没接到电话,javascript,jquery,html,forms,validation,Javascript,Jquery,Html,Forms,Validation,我正在尝试用JavaScript验证表单。当输入字段为空时,它会打印错误消息。我遇到的问题是,提交时代码不会启动 以下是HTML代码: <head> ... <script type="text/javascript" src="./js/validate.js"></script> .... </head> ... <form name="submitForm" method="post" id="submitBetaFo

我正在尝试用JavaScript验证表单。当输入字段为空时,它会打印错误消息。我遇到的问题是,提交时代码不会启动

以下是HTML代码:

<head>
...
 <script type="text/javascript" src="./js/validate.js"></script>
....
</head>

...
      <form name="submitForm" method="post" id="submitBetaForm" onsubmit="return(validate())" action="validate.php" class="form-style">
        <label for="email">Email:</label>
          <input type="text" id="email-beta" name="email" placeholder="Enter Email"/>
        <label for="firstName">Name:</label>
          <input type="text" id="firstName" class="half-width" name="messageName"  placeholder="First name"/>
...
和PHP在这里:

<?php 

session_start();

include('connection.php');

if(isset($_POST['SEND'])){

    //get information from the form
    $email = $_POST['email'];
    $first_name = $_POST['messageName'];
    $last_name = $_POST['messageLast'];
    $interest = $_POST['interest'];
    $country = $_POST['country'];

    // Check connection
    if ($con)
    {
        $insert_query = "INSERT INTO `user` (`id`, `first_name`, `last_name`, `interest`, `country`, `time`, `email`) 
        VALUES (NULL, '$first_name', '$last_name', '$interest', '$country', CURRENT_TIMESTAMP, '$email')";

        $con->query($insert_query);
        $con->close();
        echo "here";
    }
    else{
        echo "ERROR!";
    }

    //store informationn in the sessiont for later use
    $_SESSION['email'] = $email;
    $_SESSION['first_name'] = $first_name;
    $_SESSION['last_name'] = $last_name;
    $_SESSION['interest'] = $interest;
    $_SESSION['country'] = $country;

    }

事实证明,您的示例中充满了错误的变量名和引用。例如,当您应该首先使用
时,您可以使用
firstNmae

我已经纠正了其中的一些错误,而且它显然起了作用:


您只需注意浏览器控制台中的JS错误,就可以了

Javascript中存在一些问题—到处都是未定义的变量。但主要的问题是,你的Javascript根本没有被执行。如果将表单处理程序更改为
onsubmit=“return validate()”
,您将看到没有定义validate,尽管这可能取决于JS在fiddle中的加载方式

无论如何,为了缓解这个问题,请将脚本从头部移出并放在页面底部,就在关闭
正文
标记之前。您现在至少有望找到验证方法


现在,您必须处理所有未定义的变量。

创建一个fiddle将使这一问题更容易回答。我知道这并不能直接回答您的问题,但是您尝试执行的验证可以使用HTML属性
maxlength
required
来完成。你可能有理由不能使用这些属性,但如果没有,它可能是一件值得考虑的事情。只是一个想法,你如何提交表单?如果使用form.submit();然后不调用onsubmit处理程序。您必须使用提交按钮并单击它@garethdn感谢您的回复如果提交时代码没有触发,这意味着您的表单无论如何都会被提交,不管验证是否会阻止提交,或者表单在任何情况下都不会被提交?@leandroico是有道理的,但甚至注释了action=“validate.php”(将数据发送到数据库)当输入字段为空时,我仍然没有收到要显示的错误消息。谢谢您的回复。“未定义验证”是什么意思?无论我的js问题如何,都不应使用var message=document.getElementById('warning')更新;message.innerHTML='这正在工作!';通过
validate是未定义的
我的意思是,您的JavaScript不知道
validate
是什么,因为当您的
onsubmit
回调尝试执行时,它还没有被定义。现在,就像我说的,这可能只是在小提琴中,而不是在你的代码中。你想要的行为是在我张贴的小提琴中起作用的。区别在于我将它记录到控制台。在Chrome中,点击F12并进入控制台选项卡。提交您的表单(有效或无效),您将看到
这是有效的获取日志。
<?php 

session_start();

include('connection.php');

if(isset($_POST['SEND'])){

    //get information from the form
    $email = $_POST['email'];
    $first_name = $_POST['messageName'];
    $last_name = $_POST['messageLast'];
    $interest = $_POST['interest'];
    $country = $_POST['country'];

    // Check connection
    if ($con)
    {
        $insert_query = "INSERT INTO `user` (`id`, `first_name`, `last_name`, `interest`, `country`, `time`, `email`) 
        VALUES (NULL, '$first_name', '$last_name', '$interest', '$country', CURRENT_TIMESTAMP, '$email')";

        $con->query($insert_query);
        $con->close();
        echo "here";
    }
    else{
        echo "ERROR!";
    }

    //store informationn in the sessiont for later use
    $_SESSION['email'] = $email;
    $_SESSION['first_name'] = $first_name;
    $_SESSION['last_name'] = $last_name;
    $_SESSION['interest'] = $interest;
    $_SESSION['country'] = $country;

    }