Javascript 使用jQuery进行表单验证-奇怪的重定向

Javascript 使用jQuery进行表单验证-奇怪的重定向,javascript,jquery,forms,validation,Javascript,Jquery,Forms,Validation,好的,我尝试用jQuery进行表单验证。不知道为什么,但当您单击“提交”时,它会将您重定向到您所在的页面 表单操作是空的,我在标题中包含了javascript文件 我将把代码放在下面。如果你发现有什么问题,请告诉我。我希望它使用jQuery进行验证,然后将您发送到一个php文件,其中包含方法POST中的这些值 Register.js: $(document).ready(function() { $('button[name=regsubmit]').click(function(){

好的,我尝试用jQuery进行表单验证。不知道为什么,但当您单击“提交”时,它会将您重定向到您所在的页面

表单操作是空的,我在标题中包含了javascript文件

我将把代码放在下面。如果你发现有什么问题,请告诉我。我希望它使用jQuery进行验证,然后将您发送到一个php文件,其中包含方法POST中的这些值

Register.js:

$(document).ready(function() {
  $('button[name=regsubmit]').click(function(){
    var fname = $('input[name=regfirstname');
    var lname = $('input[name=reglastnaame');
    var email = $('input[name=regemail');
    var password = $('input[name=regpassword');
    var repeatpassword = $('input[name=regrepeatpassword');
    var username = $('input[name=regusername');
    var atpos = email.indexOf("@");
    var dotpos = email.indexOf(".");
    if (fname==null || fname=="")
      {
      alert('First name must be filled out!');
      return false;
      }
    if (lname==null || lname=="")
      {
      alert('Last name must be filled out!');
      return false;
      }
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=email.length)
      {
      alert('Not a valid e-mail address!');
      return false;
      }
    if (username==null || username=="")
      {
      alert("Username field must be filled out!");
      return false;
      }
    if (password==null || password=="")
      {
      alert("Subject field must be filled out!");
      return false;
      }
     if (repeatpassword==null || repeatpassword=="")
      {
      alert("Repeat password field must be filled out!");
      return false;
      }
    if (password != repeatpassword)
      {
      alert("The passwords do not match!");
      return false;
      }
    else
    {
    location.href="register.php";
    }
  });
});
$(文档).ready(函数(){
$('button[name=regsubmit]')。单击(函数(){
var fname=$('input[name=regfirstname');
var lname=$('input[name=reglastname');
var email=$('input[name=regemail');
var password=$('input[name=regpassword');
var repeatpassword=$('input[name=regrepeatpassword');
var username=$('input[name=regusername');
var atpos=email.indexOf(“@”);
var dotpos=email.indexOf(“.”);
如果(fname==null | | fname==“”)
{
警报('必须填写名字!');
返回false;
}
如果(lname==null | | lname==“”)
{
警报('必须填写姓氏!');
返回false;
}
如果(atpos)

防止提交时的默认操作

$('button[name=regsubmit]').click(function(e)
{
  e.preventDefault();

 //your code below    

}

好吧,你的JS和HTML是一堆乱七八糟的东西,所以我不会全部重新创建,但基本内容:

为您的表单提供一个ID:

<form id="SomeForm" name="register" method="POST">

这可确保正确引用按钮,防止正确提交,并仅在有效时提交。

如果表单操作为空,则默认行为为“提交”对于您所在的同一页面=>那么,我应该将操作设置为什么?register.js?您将表单提交到什么位置?哪个页面正在处理要发送到某个服务器的信息?php文件,但在我的javascript文件中,它也会重定向到该页面。在我的javascript文件中,当您单击提交按钮时,它会进行检查,然后它会检查字段ds进行验证,如果它们都很好,那么它会将您移动到register.php。然后我会向其中添加一个操作吗?还是像这样保留它,因为它重定向到register.php?因为当我这样添加它时,它仍然只是刷新页面。您确实需要将该操作添加为register.js页面,那么它如何重定向到register.php?我尝试了with register.js,它只是重定向到register.js,其中显示了脚本的代码。您需要在操作中指定register.php,即
action=“register.php”
。这与我提到的更改相结合,将正确验证和提交。不起作用,它直接将我发送到register.php,不确定原因
<form id="SomeForm" name="register" method="POST">
// reference the button by the ID you gave it
$('#regsubmit').click(function(e){
    // stop original submission
    e.preventDefault();

    // all your checking stuff here, but if true, then:
    document.getElementById('SomeForm').submit();
});