繁体   English   中英

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

[英]require at least one checkbox with nested names

更新:我发现未调用添加的方法,因为我正在为表单类调用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 []':必填项(例如此无效的小提琴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});

嵌套命名后,如何要求至少选中一个复选框?

也许改为尝试这种方法。

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

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

尝试使用length而不是length()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM