Javascript 即使验证失败,表单也会提交
我只是在学习Javascript,所以如果我的问题看起来很傻,请容忍我 我需要创建一个html表单并在字段上运行一些验证。无论字段是否正确填写,我在点击提交按钮时都会收到404错误。如果我复制/粘贴其他人的代码做同样的事情,它就可以正常工作。“somepage.php”文件不存在,但其他人的代码也不存在 我用CodeLobster编码,然后用记事本++编码。没有变化 这是HTML文件,下面是javascript文件的内容Javascript 即使验证失败,表单也会提交,javascript,Javascript,我只是在学习Javascript,所以如果我的问题看起来很傻,请容忍我 我需要创建一个html表单并在字段上运行一些验证。无论字段是否正确填写,我在点击提交按钮时都会收到404错误。如果我复制/粘贴其他人的代码做同样的事情,它就可以正常工作。“somepage.php”文件不存在,但其他人的代码也不存在 我用CodeLobster编码,然后用记事本++编码。没有变化 这是HTML文件,下面是javascript文件的内容 <!DOCTYPE HTML PUBLIC "-//W3C//DTD
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Registration Form</title>
<script type="text/javascript" src="js.js"></script>
</head>
<body>
<form action="somepage.php" onsubmit="checkLogin()" method="post" >
Name: <input type="text" name="name" id="nameF" /><br />
Email: <input type="text" name="email" id="emailF" /><br />
<input type="submit" value="Submit" name="submit" />
</form>
</body>
</html>
function checkLogin()
{
var emailPattern = /^\w+([\.\-]?\w+)*@\w+([\.\-]?\w+)*\.[a-z]{2,6}$/i;
var email = document.getElementById('emailF').value;
var name = document.getElementById('name').value;
if (email == "")
{
alert("Please enter valid email address.");
document.getElementById('emailF').select();
document.getElementById('emailF').focus();
return false;
} else if (name == "") {
alert("Please enter your name.");
document.getElementById('nameF').select();
document.getElementById('nameF').focus();
return false;
} else if (!emailPattern.test(email)) {
alert("The email address entered is invalid");
document.getElementById('emailF').select();
document.getElementById('emailF').focus();
return false;
}
return true;
}
登记表
名称:
电子邮件:
函数checkLogin()
{
var emailPattern=/^\w+([\.\-]?\w+*@\w+([\.\-]?\w+**\.[a-z]{2,6}$/i;
var email=document.getElementById('emailF').value;
var name=document.getElementById('name')。值;
如果(电子邮件==“”)
{
警报(“请输入有效的电子邮件地址”);
document.getElementById('emailF').select();
document.getElementById('emailF').focus();
返回false;
}else if(name==“”){
警告(“请输入您的姓名”);
document.getElementById('nameF').select();
document.getElementById('nameF').focus();
返回false;
}如果(!emailPattern.test(电子邮件)){
警报(“输入的电子邮件地址无效”);
document.getElementById('emailF').select();
document.getElementById('emailF').focus();
返回false;
}
返回true;
}
您的问题不是页面丢失(您已经知道)。问题是表单无论如何都要提交,即使验证失败
form.onsubmit
方法应返回false
,以防止表单提交。换言之,这:
<form action="somepage.php" onsubmit="checkLogin()" method="post" >
应该是:
<form action="somepage.php" onsubmit="return checkLogin()" method="post" >
当然,如果表单确实进行了验证,它将正确地进入
somepage.php
,此时您将看到404
错误,因为页面不存在。您的问题不是页面丢失(您已经知道)。问题是表单无论如何都要提交,即使验证失败
form.onsubmit
方法应返回false
,以防止表单提交。换言之,这:
<form action="somepage.php" onsubmit="checkLogin()" method="post" >
应该是:
<form action="somepage.php" onsubmit="return checkLogin()" method="post" >
当然,如果表单确实进行了验证,它将正确地进入
somepage.php
,此时您将看到404
错误,因为该页面不存在。如果“somepage.php”不存在,为什么您希望它工作?如果没有有效的操作,该表单绝对无法工作。一旦函数checkLogin返回true,它将启动表单中描述的操作。如果该页面不存在,则返回404错误。也许其他人的代码返回false,而该页面永远不会被解雇。问题标题具有误导性,而OP实际上不是这么问的。如果“somepage.php”不存在,为什么您希望它工作?如果没有有效的操作,该表单绝对不可能工作。一旦函数checkLogin返回true,它将启动表单中描述的操作。如果该页面不存在,则返回404错误。也许其他人的代码返回false,并且该页面永远不会被解雇。问题标题具有误导性,这实际上不是OP所要求的。同意。您需要事件处理程序中的return语句。我也是这个网站的新手。。。以下是我的回答:首先,谢谢你的快速回复。第二,是的,我现在意识到问题标题的措辞应该有所不同。米娅·库帕。如果函数返回true,则“操作”应该生效,这是有道理的。我确实玩过它,但它没有发挥应有的作用。但在这一点上,我不记得为什么了。今晚我将再次尝试,并提供更多信息。谢谢同意。您需要事件处理程序中的return语句。我也是这个网站的新手。。。以下是我的回答:首先,谢谢你的快速回复。第二,是的,我现在意识到问题标题的措辞应该有所不同。米娅·库帕。如果函数返回true,则“操作”应该生效,这是有道理的。我确实玩过它,但它没有发挥应有的作用。但在这一点上,我不记得为什么了。今晚我将再次尝试,并提供更多信息。谢谢