jQuery自定义验证器

jQuery Custom Validators

本文关键字:验证 自定义 jQuery      更新时间:2023-09-26

我正在使用jQuery验证插件,我希望添加一些自定义逻辑。我有一系列的复选框,这些复选框有关联的子复选框。对于某些(不是全部)父复选框,我想要求其中一个子复选框被选中。我对此没有硬编码问题,所以我在DOM中添加了这样一个字段:

<input type="hidden" id="child_required_1" class="child_required_1" />

然后添加一个像这样的自定义验证器:

jQuery.validator.addMethod('child_required_1', function(val, element) {
if($('#product_responses_1').length > 0) {
    if($('#product_responses_1').is(':checked')) {
        var count = $("input:checkbox:checked[id^='children_tags_1_']").length;
        if(count == 0) {
            return false;
        }
    }
}
return true;
}, 'You must select at least one child.');

这工作得很好。但是,当我复制所有这些并添加"_2"时,似乎只有一个验证器被触发。那么从我收集到的信息来看,自定义验证器在每个表单中都是唯一的吗?如果是这样的话,我该如何处理这样的情况,我可能需要15-20个这些都显示在不同的地方?我不想只显示一个错误。

我也可以创建一个类规则,但这并不能解决我创建多个错误标签并将它们放置在相关位置的问题。

显然,将它放在隐藏字段上不起作用,但是当我删除隐藏字段并将该类应用于实际复选框本身时,它工作得很好。不太清楚原因