簡體   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