如何在jQuery验证插件中的许多字段中添加“depends:”规则?

时间:2015-06-19 07:36:37

标签: jquery jquery-validate

我已经使用此规则验证用户帐单邮寄地址,如果他想要帐单(输入#billyes已选中),这是我当前的代码:

                //BILLING VALIDATION
                legal_id: {
                    required: {
                        depends: function(element) {
                          return $('#billyes').is(":checked");
                        }
                    }
                 },
                 billing_name: {
                    required: {
                        depends: function(element) {
                          return $('#billyes').is(":checked");
                        }
                    }
                 },
                 billing_adress: {
                    required: {
                        depends: function(element) {
                          return $('#billyes').is(":checked");
                        }
                    }
                 },

                 .... ETC

return $('#billyes').is(":checked");

也重复了

我想做这样的事情:

                //BILLING VALIDATION
                legal_id,billing_name,billing_adress,etc: {
                    required: {
                        depends: function(element) {
                          return $('#billyes').is(":checked");
                        }
                    }
                 }

这可能吗?还有其他选择吗?

谢谢你。

1 个答案:

答案 0 :(得分:2)

legal_id,billing_name,billing_adress,etc: {

.validate()方法中,您根本不能做任何类似的事情。 rules选项中的对象字面值必须为key:value对,其中key只能是单个字段name

但是,有一种方法可以同时将同一规则应用于多个字段:

您可以将.rules()方法与jQuery .each()结合使用。但是你需要一个聪明的jQuery选择器来同时将它们全部定位。就像"以"开头选择器或class。您无法使用"以billing_"开头由于您还有legal_id,因此您需要为这些字段分配class或执行其他操作。

$('.yourFields').each(function() {
    $(this).rules('add', {
        required: {
            depends: function(element) {
                return $('#billyes').is(":checked");
            }
        }
    });
});

否则,在.validate()方法中,没有捷径。