更新:我发现我添加的方法没有被调用,因为我正在为我的表单类调用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});
当我有嵌套命名时,如何要求至少选中一个复选框?
答案 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
}