提交中的问题 - 更新

时间:2014-02-12 13:35:22

标签: javascript php jquery ajax forms

感谢您到目前为止的输入。 逻辑在那里,但它仍然不想提交时传递true提交... 我添加了一个警告,看它是否在值为true时被调用,但由于某些奇怪的原因,'return false'没有传递值来提交....

我无法理解问题所在。开始受到威胁lol

    <form name="newuser" id="form" method="post" action="do_new_user.php" onSubmit="return validateForm(false)"> 


    function validateForm(submitNow){


if (submitNow == true){
         alert ('call ok');
     return true;
     }

else
{
    var x=document.forms["newuser"]["name"].value;
    var x2=document.forms["newuser"]["surname"].value;
    var x3=document.forms["newuser"]["email"].value;
    var x4=document.forms["newuser"]["password1"].value;
    var x5=document.forms["newuser"]["password2"].value;

    if (x==null || x=="") 
      {

      $("#form_status").fadeIn("slow");
      $("#form_status").text("Please enter your name.");
      return false;
      }

    if (x2==null || x2=="") 
      {
      $("#form_status p").fadeIn("slow");
      $("#form_status").text("Please enter your surname.");
      return false;
      }

    if (x3==null || x3=="") 
      {
      $("#form_status").fadeIn("slow");
      $("#form_status").text("Please enter your email address.");
      return false;
      } 

    var atpos=x3.indexOf("@");
    var dotpos=x3.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x3.length)
      {
      $("#form_status").fadeIn("slow");
      $("#form_status").text("Email address in invalid.");
      return false;
      }

    if (x4==null || x4=="") 
      {
      $("#form_status").fadeIn("slow");
      $("#form_status").text("Please enter your password.");
      return false;
      }   

    if (x5==null || x5=="") 
      {
      $("#form_status").fadeIn("slow");
      $("#form_status").text("Please re-enter your password.");
      return false;
      } 

    if (x4!==x5)
      {
      $("#form_status").fadeIn("slow");
      $("#form_status").text("Password Mismatch.");
      return false; 
      }

    //Check if username exists.
    $.post("http://ryangosden.com/breadcrumbs/check_user_exists.php",  
             {
                x3 : x3
             } , 

             function(data)
              { 

                var obj = jQuery.parseJSON(data);

                if (obj.email_exists == 1) 
                  {   
                    $("#form_status").fadeIn("slow");
                    $("#form_status").text("Email Address Taken.");

                }  

                if (obj.email_exists == 2)   
                  {   
                $("#form_status").fadeIn("slow");
                    $("#form_status").text("Email ok.");
                    validateForm(true);
                  }  
    });
     return false; 
}


}

1 个答案:

答案 0 :(得分:2)

如果我理解正确,表单应该在没有收到电子邮件时提交(所有其他字段都可以)

在您的代码的这一点上似乎已经完成了:

$("#form_status").fadeIn("slow");
     $("#form_status").text("Email ok.");
     validateForm(true);
}  

你必须抓住这个论点,这样你才能提交表格,这可以在你的职能开始时完成:

function validateForm(submitNow) {

   if (submitNow) return true;

   [... rest of function...]
}

感谢A. Wolff和Karl-AndréGagnon的评论,我的第一个答案太快了:)

<强>更新

这是一个可以在

上扩展的工作示例
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
function validateform(submitNow) {
    if (submitNow) return true;
    else if ($('#input').val()) return validateform(true);
    alert('Please enter a value');
    return false;
}
</script>
<form id="#form" action="http://google.com" onsubmit="javascript:return validateform()">
    <input type="text" id="input"><input type="submit">
</form>