2015-04-20 49 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 
} 
相關問題