jquery验证完成后省略表单帖子

时间:2015-08-12 13:11:56

标签: jquery jquery-validate

更新:关闭此帖子,因为问题是远程帖子干扰了表单帖子。可以在此new post

找到更多内容

在添加验证之前,表单正确发布。

有这个表单,它验证了电子邮件,完成后表单完成了onsubmit javascript函数,但表单的数据没有发布?为什么呢?

此外,我尝试使用该操作,但在验证表单后,从未使用该操作。

以下是表格:

<form  id="signup_form" name="signup_form"  method="post" onsubmit="loadPage('registration')">  
<!--action="/registration" method="post"--> 
  <h2>E-MAIL ADDRESS<sup><b>*</b></sup></h2>
  <input value="<?=$uEmail?>" type="text" name="signup_email" id="signup_email" size="40" class="" style="margin-right:6px;font-size:18px" /><br /><label for="signup_email">Example: me@mydomain.com</label>
  <br class="clear" /><br />
  <h2>PASSWORD<sup><b>*</b></sup></h2>
  <input type="password" name="requiredpWord" id="requiredpWord"  size="15" style="width:120px" ><br />
  <h2>CONFIRM PASSWORD<sup><b>*</b></sup></h2>
  <input type="password" name="requiredcpWord" id="requiredcpWord"  size="15" style="width:120px" ><br />
  <button id="submitBTN" type="submit" value="COMPLETE SIGNUP">COMPLETE SIGN UP</button>
</form>

操作已被注释掉,我尝试使用它来替换onsubit,但是当我按下按钮的操作时什么也没做。

这是JQuery验证的形式,它有效。我添加了submitHandler以查看表单是否包含帖子。到目前为止它什么都没做。

$(function() {
    $("#signup_form").validate({
        rules: {
            signup_email: {
                email: true,
                required: true,
                remote: { 
                    type: 'post',
                    url: 'registration/isEmailAvailable',
                    data: {
                        email:
                            function() {
                                 // console.log(data);
                                return $( "#signup_email" ).val();
                            }
                    }
                }
            },
            requiredpWord: {
                required: true,
                minlength: 8
            },
            requiredcpWord: {
                equalTo: "#requiredpWord"
            }
        },
       messages: {
          signup_email: {
            required: "Please provide an email",
            email: "Please enter a valid email address"//,
           },
          requiredpWord: {
            required: "Please provide a password.",
            minlength: "Your password must be at least 8 characters long"
           },
          requiredcpWord: "Your passwords do not match."
      },
    invalidHandler: function(form, validator) {
       var errors = validator.numberOfInvalids();
       if (errors) {
          var message = errors == 1
          ? 'Please correct the following error:\n'
          : 'Please correct the following ' + errors + ' errors.\n';
          var errors = "";
          if (validator.errorList.length > 0) {
           for (x=0;x<validator.errorList.length;x++) {
               errors += "\n\u25CF " + validator.errorList[x].message;
           }
        }
       alert(message + errors);
      }
      validator.focusInvalid();
     },
      //added this to see if the form would post, did not change it
       submitHandler: 
         function(form) {
              // do other things for a valid form
              form.submit();
           }
});

php代码很简单......

var_dump($_POST);
var_dump($_GET);

POST 会返回一个空数组。根本没有表格数据。

GET 返回“注册”

loadPage("registration")功能仅限于以下内容:

function loadPage(name){    
    window.location.replace('/'+name);

}

重申我的问题:

  1. 为什么POST中缺少表单数据?

  2. BONUS:为什么在表单验证后该操作什么都不做,但onsubmit有效?请注意,如果我从JQuery验证中排除submitHandler,则会成立。

  3. 更新:测试表单验证,表单正确验证为真或假。

    $( "#submitBTN" ).click(function() {
      alert( "Valid: " + $("#signup_form").valid() );
    });
    

    更新

    1. 添加了invalidHandler代码,表单验证正确,仅在出现错误时显示。这不是验证问题。
    2. 删除onsubmit以便采取行动,现在验证不执行任何操作。使用jQuery验证插件1.7。我要检查一个较新的版本。上面的注意代码仍会显示onsubmit,因为我不想更改整个问题。
    3. submitHandler也被取消注释。警报未显示。
    4. 更新4 问题存在于用于电子邮件验证的远程帖子。如果我注释掉远程验证,帖子实际上就完成了。根据这一发现开启了一个新问题。

1 个答案:

答案 0 :(得分:0)

删除onsubmit="loadPage('registration')"并取消注释submitHandler部分应该可以胜任。 同时取消注释表单属性列表中的action="/registration"