2015-04-20 48 views
0

更新:我发现我的添加方法没有被调用,因为我正在为我的窗体类调用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。

这stopeed工作时我重构形式看起来像这样

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

这最终需要为每一个方面复选框。我想能够说'供应商[] 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}); 

我怎么能要求时,我有嵌套的命名至少一个复选框被选中?

+0

我刚刚更新了我的问题,使其多了几分清晰。我想要求使用嵌套名称检查至少一个复选框。 – hodale

+0

您是否使用验证插件? – EternalHour

+0

我正在使用jquery验证 – hodale

回答

0

也许试试这种方法。

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

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

我试过这个在输入选择器上有和没有'.kegsize',仍然没有发射。另外,因为长度需要大于0,所以我应该能够忽略> = 1。 – hodale

0

尝试使用length代替length()

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