用于表单验证的JavaScript desn';我好像没接到电话
我正在尝试用JavaScript验证表单。当输入字段为空时,它会打印错误消息。我遇到的问题是,提交时代码不会启动 以下是HTML代码:用于表单验证的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
<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;
}