require_from_group的重复错误消息

时间:2014-06-06 23:51:42

标签: jquery jquery-validate

我正在尝试使用jQuery Validate插件对两个字段进行分组,并为该组提供一条错误消息。

我有两个字段(已分组),如果两个字段都没有填写,我想显示一条说明You must either fill out 'U.S. taxpayer identification number' or 'Foreign tax identifying number'的错误消息。现在,表单正在创建SIX单独的错误消息,只是简单地说明Please fill at least 1 of these fields.

我在下面提供了我的代码:

html

<input class="tin" name="w8_us_tin" type="text" style="width: 50.8%; height: 1.8%; top: 42.1%; left: 10.3%;">
<input class="tin" name="w8_foreign_tin" type="text" style="width: 30%; height: 1.8%; top: 42.1%; left: 64.2%;">

javascript

$(function () {
    $("form.signup_3").validate({
        errorElement: "li",
        errorPlacement: function(error, element) {
            error.appendTo( $("ul.error") );
        },
        groups: {
            tin: "w8_us_tin w8_foreign_tin"
        },
        rules: {
            w8_us_tin:{
                require_from_group: [1, '.tin']
            },
            w8_foreign_tin:{
                require_from_group: [1, '.tin']
            }
        },
        messages: {
            tin: {
                require_from_group: "You must either fill out 'U.S. taxpayer identification number' or 'Foreign tax identifying number'"
            }
        }
    });
});

1 个答案:

答案 0 :(得分:2)

使用the groups option

  

&#34;一个组由一个任意的组名作为键,一个空格分隔的元素名列表作为值。使用errorPlacement控制群组邮件的放置位置。&#34;

它的唯一目的是从多个字段中获取错误消息并将其转换为一条消息。对于在不同时间触发的具有不同规则的字段,可能会混乱。但是,如果任何分组字段同时获得相同的消息,例如由require_from_group方法触发时,它就是完美的。

groups: {
    someArbitraryName: "w8_us_tin w8_foreign_tin"
}

DEMO:http://jsfiddle.net/7LsHJ/


引用OP:

  

&#34;现在,表单正在创建SIX单独的错误消息,只是简单地说明Please fill at least 1 of these fields。&#34;

如果您只有两个字段,我不知道如何获得六条消息,但我确切知道您为什么会看到通用的Please fill at least x消息。

tin内不能有messages项,因为它不是字段name

messages: {
    tin: {  // <- this is not a field name
        require_from_group: "You must either fill out 'U.S. taxpayer identification number' or 'Foreign tax identifying number'"
    }     
}

messages的分配方式与rules类似。 messages选项中的每个项目始终分配给字段name

一个字段上所有规则的消息:

messages: {
    fieldName: "custom message same for all rules on this field"
}

或者字段上每个规则的自定义消息:

messages: {
    fieldName: {
        required: "custom message for required rule",
        digits: "custom message for digits rule"
    }
}

适用于您的案件:

messages: {
    w8_us_tin: {
        require_from_group: "You must either fill out 'U.S. taxpayer identification number' or 'Foreign tax identifying number'"
    },
    w8_foreign_tin: {
        require_from_group: "You must either fill out 'U.S. taxpayer identification number' or 'Foreign tax identifying number'"
    }
}

更新了DEMO:http://jsfiddle.net/7LsHJ/1/