JQuery表单验证冲突

时间:2013-08-21 12:53:46

标签: jquery forms jquery-validate

我正在使用Jquery表单验证库:

的jquery-validate.js

当用户提交表单时,我向下滑动一个div,该div有一个必须被chekced的复选框才能继续:

if(!$('#agreeConfirm').is(':checked')){

     alert('Please tick to agree to our terms and conditions');
     $('.termsAgree').slideDown();
     return true;

}

这非常有效,因为表单未提交,警报会与显示复选框的slideDown一起显示。但是,如果用户没有选择其中一个选择选项,则表单会提交(尽管会出现“需要此字段”消息。如果我在上面注释掉我的行,则会观察到正确的行为。

我的验证码结构如下:

$("form#register").validate({

 rules:{

       name:{
           required: true,
           number: false
       },

       .....

       add1:{
       required: true
       }    

 }

});

$('form#register').submit(function(){

     ... 

     if(!$('#agreeConfirm').is(':checked')){

         alert('Please tick to agree to our terms and conditions');
         $('.termsAgree').slideDown();
         return false;

     }

}

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以在字段的表单验证方法中为复选框添加规则。看this

答案 1 :(得分:0)

使用jQuery Validate插件时,不应该使用完整的submit处理函数。这是多余的,也是你冲突的原因。该插件已经自动“处理”submit事件......

该插件具有submitHandler回调函数,您可以将其用于提交有效表单时需要完成的任何操作。

更像这样......

$("form#register").validate({
     rules:{
        name:{
            required: true,
            number: false
        },

       .....

        add1:{
            required: true
        }
    },
    submitHandler: function(form) {
        // something to do when the form is valid
        if(!$('#agreeConfirm').is(':checked')){
            alert('Please tick to agree to our terms and conditions');
            $('.termsAgree').slideDown();
            form.submit();
        };
        return false;
    },
    invalidHandler: function(event, validator) {
        // something to do when validation fails
    }
});

查看所有回调选项:http://jqueryvalidation.org/validate