jquery 验证属性以检查多个字段

jquery validate properties to check multiple fields

我想知道是否可以进行这种 jquery 验证,也许需要单独的方法。

我正在检查 phone 号码、区域、前缀和行号的三个字段。

因此,如果输入了 none 个字段,则应绕过验证。

我现在所拥有的是检查每个值的最小和最大长度,但是例如,如果用户仅在区域文本框中正确输入值,然后将其他两个文本框留空,则验证是被绕过,因为条件是 "met",min 或 max 或空白。

我想要实现的是,如果任何字段有值,那么所有三个字段都应该有值,如果其中 none 有值,则验证关闭。

这是我目前拥有的:

    $(this).validate({
        rules: {

            QUEST7_area: {
                minlength: 3,
                maxlength: 3
            },
            QUEST7_prefix: {
                minlength: 3,
                maxlength: 3
            },
            QUEST7_linenum: {
                minlength: 4,
                maxlength: 4
            }
        },
        errorPlacement: function (error, element) {
            //  invalid handler will place the error
            var errorRect = $('div.errorrect');
            var message;

            if ((element[0].id == "QUEST7_area") || (element[0].id == "QUEST7_prefix") || (element[0].id == "QUEST7_linenum")) {
                        var afterElement = $('#QUEST7_linenum');
                        error.insertAfter(afterElement);
                        phoneErrorDisplayed = true;
            } 

            if (isNullOrWhiteSpace(errorRect.text())) {
                errorRect.text(message);
            }
        },
        messages: {

            QUEST7_area: $('#QUEST7').data('errormsg'),
            QUEST7_prefix: $('#QUEST7').data('errormsg'),
            QUEST7_linenum: $('#QUEST7').data('errormsg'),
        }

    });

知道如何解决这个问题吗?

So, if none of the fields are entered in then the validation should be bypassed. ... What I want to achieve is if any of the fields have value, then all three fields should have value, if none of them have values then validation is off.

the additional-methods.js file 中,有一个名为 skip_or_fill_minimum 的 rule/method,它完全符合您所描述的内容。

该规则将允许您从指定的字段组中指定最少数量的字段 required...如果 none 已填写,则将跳过所有字段。

这个方法有两个参数...

1.组中必须填写的最少字段数。

在您的情况下,它是 3,因为我们希望所有三个都完成(如果有的话)。

2。 select或定义组

在您的情况下,input[name^='QUEST7'] 将自动 select 所有 input 元素,其中 name [=18] 开头=].当然,您可以指定一个特殊的 class 或设计任何合适的 selector 仅获取这三个字段。

$(this).validate({
    rules: {
        QUEST7_area: {
            minlength: 3,
            maxlength: 3,
            skip_or_fill_minimum: [3,"input[name^='QUEST7']"]
        },
        QUEST7_prefix: {
            minlength: 3,
            maxlength: 3,
            skip_or_fill_minimum: [3,"input[name^='QUEST7']"]
        },
        QUEST7_linenum: {
            minlength: 4,
            maxlength: 4,
            skip_or_fill_minimum: [3,"input[name^='QUEST7']"]
        }
    },
    ....

演示:http://jsfiddle.net/ktn6d7dd/

您可以选择使用 groups and errorPlacement 选项来合并和放置一条错误消息。