2012-08-03 150 views
1

我只是学习JavaScript,所以容忍我,如果我的问题似乎傻...表单提交,即使验证失败

我需要建立一个HTML表单和运行领域的一些验证。无论字段是否填写正确,点击提交按钮时都会出现错误404。如果我复制/粘贴执行相同操作的其他代码,它可以正常工作。文件“somepage.php”不存在,但它也不适用于其他人的代码。

我用CodeLobster编码,然后用Notepad ++编码。不用找了。

这里的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;  
} 
+0

如果“somepage.php”不存在,为什么你会期望它能工作? – casablanca 2012-08-03 01:17:00

+0

如果没有有效的操作,则此表单将无法正常工作。一旦checkLogin函数返回true,它将触发表单中描述的操作。如果该页面不存在,则返回404错误。也许别人的代码返回false,那个页面永远不会被解雇。 – 2012-08-03 01:18:48

+1

问题标题具有误导性,这实际上并不是OP所要求的。 – Hamish 2012-08-03 01:19:14

回答

5

你的问题不在于网页缺少(您已经知道了)。即使验证失败,问题仍然是您的表单提交。

form.onsubmit方法应返回false以防止表单提交。换句话说,这样的:

<form action="somepage.php" onsubmit="checkLogin()" method="post" > 

应该是:

<form action="somepage.php" onsubmit="return checkLogin()" method="post" > 

当然,如果表格没有验证,它会正确地继续somepage.php在这一点上,你会希望得到一个404误差该页面不存在。

+0

同意。您需要事件处理程序中的return语句。 – 2012-08-03 01:20:47

+0

首先,感谢您的快速回复。 – user1554726 2012-08-03 10:58:54

+0

我是这个网站的新手......以下是我回复的其余部分: 首先,感谢您的快速回复。其次,是的,我现在意识到问题标题应该有不同的措辞。 Mia culpa。 它是有道理的,如果该函数返回true,那么“行动”应该生效。我确实玩过了它,但它并没有像它应该那样工作。但在这一点上,我不记得为什么。我今晚会再试一次,并提供一些信息。 谢谢! – user1554726 2012-08-03 11:11:57