需要至少一个带嵌套名称的复选框

时间:2015-04-20 18:36:43

标签: jquery validation checkbox

更新:我发现我添加的方法没有被调用,因为我正在为我的表单类调用addClassRules。我不知道为什么我不能这样做,但我通过添加一个没有值的隐藏表单字段来修复它,并将自定义验证应用于该字段。

我有一个表单的部分,我要求至少在复选框上检查。最初我通过验证:

$.validator.addMethod('kegRequired', $.validator.methods.required, 'Choose at least one keg size');
$.validator.addClassRules('kegsize', {kegRequired: true});

每个复选框看起来像这样:

input class="kegsize" name="33kegsizes[]" type="checkbox" value="SixthBbl"

该号码是父“供应商”的ID。

当我将表单重构为这样的

时,这就停止了工作
input class="kegsize" name="vendors[33][kegsize][SixthBbl]" type="checkbox" value="SixthBbl"

根据需要,每个复选框都会结束。我想能够只说'vendors [] kegsize []':required(就像这个非工作小提琴http://jsfiddle.net/7rjcyej6/)。

这是一个不同的尝试,但这不起作用,我不确定原因:

$.validator.addMethod('kegRequired', function(value, element, params) {
    if ($(element).find('input:checked .kegsize').length()){
        return true
    }else{
        return false
    }
}, 'Choose at least one keg size');

$.validator.addClassRules('keg-size-price-form', {kegRequired: true});

当我有嵌套命名时,如何要求至少选中一个复选框?

2 个答案:

答案 0 :(得分:0)

也许尝试这种方法。

var $element = $(element).find('input:checked');
var $length = $element.length;

if ($length >= 1){
    return true
}else{
    return false
}

答案 1 :(得分:0)

尝试使用length代替length()

if ($(element).find('input:checked .kegsize').length > 0){
    return true
}else{
    return false
}