jQuery通过AJAX问题验证规则和submitHandler

时间:2018-01-10 14:52:47

标签: jquery ajax

我有一个简单的表单,我想用validate()插件验证。出于一些奇怪的原因,它只是部分工作。 如果两个输入都为空,则验证有效,但如果只有一个输入有效,则验证不再起作用并按原样提交表单。

这里是html

<form action="ajax/process.php" enctype="multipart/form-data" method="post" id="newAccount3" class="validate">
                    <input type="hidden" name="postOp" value="account-creation-password">
                    <input type="password" id="usrPass" name="usrPass" class="form-control mt-3" required autofocus data-msg="Trebuie sa introduci o parola">
                    <input type="password" id="usrPassConfirm" name="usrPassConfirm" class="form-control mt-3" required data-msg="Parolele trebuie sa se potriveasca"><br>
                    <button type="submit" class="btn btn-success alert-success px-5 px-sm-3 submitBtn">Continua</button>
                </form><hr>

和JS

$('.validate').validate({
    ignore: ":hidden",
    rules: {
        usrPass: {
            required: true,
            minlenght: 6
        },
        usrPassConfirm: {
            required: true,
            minlenght: 6,
            equalTo: "#usrPass"
        }
    },
    submitHandler: function(form){
        var target = form.id;
        $.post('ajax/process.php',$('#'+target).serialize(),function(response){
            if(response.msg === 'OK-next'){
               location.reload();
            }
        },'json');
        return false;
    }
});

这是fiddle

任何想法?

顺便说一下,如果我从jS中删除规则,它正在运行,但我需要密码才能匹配。

有一个link

要检查它,它不起作用。只需输入一个虚假的电子邮件地址,下一步就会看到问题。

1 个答案:

答案 0 :(得分:1)

我试过你的小提琴,看起来你正在加载jQuery 1.9.1。我已将其更改为jQuery 3.2.1并且一切正常。

$('.validate').validate({
    ignore: ":hidden",
    rules: {
        usrPass: {
            required: true,
            minlength: 6
        },
        usrPassConfirm: {
            required: true,
            minlength: 6,
            equalTo: "#usrPass"
        }
    },
    submitHandler: function(form){
        var target = form.id;           
        $.post('ajax/process.php',$('#'+target).serialize(),function(response){
            if(response.msg === 'OK-next'){
               location.reload();
            }
        },'json');
        return false;
    }
});

Updated Fiddle