Javascript 即使验证失败,表单也会提交

Javascript 即使验证失败,表单也会提交,javascript,Javascript,我只是在学习Javascript,所以如果我的问题看起来很傻,请容忍我 我需要创建一个html表单并在字段上运行一些验证。无论字段是否正确填写,我在点击提交按钮时都会收到404错误。如果我复制/粘贴其他人的代码做同样的事情,它就可以正常工作。“somepage.php”文件不存在,但其他人的代码也不存在 我用CodeLobster编码,然后用记事本++编码。没有变化 这是HTML文件,下面是javascript文件的内容 <!DOCTYPE HTML PUBLIC "-//W3C//DTD

我只是在学习Javascript,所以如果我的问题看起来很傻,请容忍我

我需要创建一个html表单并在字段上运行一些验证。无论字段是否正确填写,我在点击提交按钮时都会收到404错误。如果我复制/粘贴其他人的代码做同样的事情,它就可以正常工作。“somepage.php”文件不存在,但其他人的代码也不存在

我用CodeLobster编码,然后用记事本++编码。没有变化

这是HTML文件,下面是javascript文件的内容

<!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,则“操作”应该生效,这是有道理的。我确实玩过它,但它没有发挥应有的作用。但在这一点上,我不记得为什么了。今晚我将再次尝试,并提供更多信息。谢谢