【问题标题】:require at least one checkbox with nested names需要至少一个带有嵌套名称的复选框
【发布时间】:2015-06-27 15:27:45
【问题描述】:

更新:我发现我添加的方法没有被调用,因为我正在为我的表单类调用 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});

当我有嵌套命名时,我如何要求至少选择一个复选框?

【问题讨论】:

  • 我刚刚更新了我的问题以使其更加清晰。我想要求使用嵌套名称至少选中一个复选框。
  • 你在使用验证插件吗?
  • 我正在使用 jquery 验证

标签: jquery validation checkbox


【解决方案1】:

也许可以试试这种方法。

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

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

【讨论】:

  • 我在输入选择器上使用和不使用'.kegsize'都试过了,仍然没有触发。此外,由于长度需要大于 0,我应该能够离开 >= 1。
【解决方案2】:

尝试使用length 而不是length()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多