将六个输入字段作为一个组进行jQuery验证

将六个输入字段作为一个组进行jQuery验证,jquery,jquery-validate,Jquery,Jquery Validate,我正在尝试实现6个表单字段,允许用户输入发送到电子邮件的6位代码 所有这6个字段都是必填字段,如果其中任何一个字段未填写,则错误消息将显示在右侧 在我的代码中,我有以下问题 1) 当它们全部未填充时,将显示错误消息。这是正确的 2) 只要其中一个已填充,错误消息就会消失 2a)只有当我点击“提交”按钮时,错误信息才会短暂出现。一旦我释放单击,错误消息就消失了。我不确定这是否是因为错误消息被覆盖 是否可以编写一种方法来检查,只要其中一个字段未填写,就会显示错误消息 $(document).read

我正在尝试实现6个表单字段,允许用户输入发送到电子邮件的6位代码

所有这6个字段都是必填字段,如果其中任何一个字段未填写,则错误消息将显示在右侧

在我的代码中,我有以下问题

1) 当它们全部未填充时,将显示错误消息。这是正确的

2) 只要其中一个已填充,错误消息就会消失

2a)只有当我点击“提交”按钮时,错误信息才会短暂出现。一旦我释放单击,错误消息就消失了。我不确定这是否是因为错误消息被覆盖

是否可以编写一种方法来检查,只要其中一个字段未填写,就会显示错误消息

$(document).ready(function(){

    $("#verification_form").validate({
        groups: {
            inputGroup: "num1 num2 num3 num4 num5 num6"        
        },                  
        rules: {
            Name: {
                required: true,
                maxlength:50
            },
            Email: {
                required: true,
                email:true,
                maxlength:50
            },
            num1: {
                required:true
            },
            num2: {
                required:true                                           
            },
            num3: {
                required:true
            },
            num4: {
                //required: "#divVerifyEmail:visible",
                required:true                                           
            },
            num5: {
                required:true
            },
            num6: {
                required:true                                           
            }                                                                                                       
        },


        highlight: function(element, errorClass) {
            $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
        },
        errorPlacement: function (error, element) {
             $(element).closest('.form-group').find('.error-msg').text(error.text());
        },
        unhighlight: function(element) {
            $(element).closest('.form-group').removeClass('has-error').addClass('has-success')
        },
        submitHandler: function (form) { // for demo
            alert('valid form submitted'); // for demo
            return false; // for demo
        }   
})      

groups
选项只是将所有消息合并为一个消息。如果所有六个字段都有自己的
必选
规则,则当一个字段满足时,消息将被清除,然后当另一个字段不满足时,消息将返回,依此类推,在字段周围移动时切换开/关/等

此选项不适用于包含不同消息的多个字段。它旨在与复杂的规则一起使用,例如
require\u from\u group
,这些规则总是同时在多个字段上放置相同的消息。
groups
选项按预期的方式工作,但它不是您想要的

您可能想尝试使用
require\u from\u group
规则

$("#verification_form").validate({
    groups: {
        inputGroup: "num1 num2 num3 num4 num5 num6"
    },
    rules: {
        ....
        num1: {
            require_from_group: [6, $("[name^=num]")]
        },
        num2: {
            require_from_group: [6, $("[name^=num]")]
        },
        num3: {
            require_from_group: [6, $("[name^=num]")]
        },
        num4: {
            require_from_group: [6, $("[name^=num]")]
        },
        num5: {
            require_from_group: [6, $("[name^=num]")]
        },
        num6: {
            require_from_group: [6, $("[name^=num]")]
        }
    },
    ...
或者一种将此规则同时分配给所有六个字段的较短方法

$("[name^=num]").each(function() {
    $(this).rules('add',{
        require_from_group: [6, $("[name^=num]")],
        messages: {
            require_from_group: "These 6 fields are required"
        }
    });
});

演示

我不确定到底是什么问题,你能创建一个提琴吗?向我们展示相关的HTML标记可能是个好主意。谢谢!这就是我要找的!