多个动态创建的复选框或无线组的jquery验证程序

多个动态创建的复选框或无线组的jquery验证程序,jquery,checkbox,jquery-validate,radio,Jquery,Checkbox,Jquery Validate,Radio,我有一个表单,它包含多组复选框和/或无线组,这些复选框和/或无线组是根据sql数据动态创建的。我需要验证每个组中是否至少选中了一个复选框(或单选按钮)。 HTML输出与此类似: <td> <input type="checkbox" name"30001" id"30001-1" class="req_question" value="1"> <input type="checkbox" name"30001" id"30001-2" class="

我有一个表单,它包含多组复选框和/或无线组,这些复选框和/或无线组是根据sql数据动态创建的。我需要验证每个组中是否至少选中了一个复选框(或单选按钮)。 HTML输出与此类似:

<td>
    <input type="checkbox" name"30001" id"30001-1" class="req_question" value="1">
    <input type="checkbox" name"30001" id"30001-2" class="req_question" value="2">
</td>
<td>    
    <input type="checkbox" name"30002" id"30002-1" class="req_question" value="1">
    <input type="checkbox" name"30002" id"30002-2" class="req_question" value="2">
</td>
<td>        
    <input type="radio" name"30003" id"30003-1" class="req_question" value="1">
    <input type="radio" name"30003" id"30003-2" class="req_question" value="2">
</td>
<td>    
    <input type="radio" name"30004" id"30004-1" class="req_question" value="1">
    <input type="radio" name"30004" id"30004-2" class="req_question" value="2">
</td>
我相信这就是抓取“req_question”类并同时验证所有组。
当我无法知道有多少组或它们的名称时,我如何“找到”所有不同的组并单独验证它们

引用OP

“我如何‘找到’所有不同的组并验证它们 就个人而言,当我无法知道有多少人,或者什么的时候 他们的名字是什么?”

你说的“发现”是什么意思?您的代码已经找到了它们

你现在正在做的就是,当你不知道所有的
名称或你有多少时,你将如何验证某些东西。
req_-question
验证方法/规则将自动应用于包含
class=“req_-question”
的每个输入,即使您不知道有多少个或它们各自的
名称



您的HTML标记:

name"30004" id"30004-2"
$.validator.addMethod('req_question', function(value) {
    return $('.req_question:checked').size() > 0;
}, 'Please check at least one box.');
这里有两个问题:

1) 您缺少两个上的等号,
=
。应该是
name=“30004”id=“30004-2”

2) 通常,
name
id
值不允许以数字开头。虽然HTML5会允许,但在我看来,这仍然是一种糟糕的编码实践。见:



您的自定义方法:

name"30004" id"30004-2"
$.validator.addMethod('req_question', function(value) {
    return $('.req_question:checked').size() > 0;
}, 'Please check at least one box.');
您的函数已中断,因为
$('.req\u question:checked')
一次将所有这些选中的元素作为目标。
addMethod
中的函数有两个参数,
value
element
是正在验证的元素的当前值。
元素
是正在验证的当前元素。这些关键字是您使用的,因为您只需要针对正在验证的元素

$.validator.addMethod('req_question', function (value, element) {
    return value > 0;
}, 'Please check at least one box.');
工作演示:


但是,您不需要自定义方法来执行此操作。默认情况下,如果将
required
规则应用于这些相同的元素,将得到相同的精确结果。我使用
.rules('add')
方法将
required
规则添加到带有
req\u question
类的所有字段中

$('.req_question').each(function () {
    $(this).rules('add', {
        required: true,
        messages: {
            required: 'Please check at least one box.'
        }
    });
});
演示2:


等等
甚至比这简单得多。只需在所有这些元素上使用
class=“required”
而不是
class=“req\u question”

<input type="checkbox" name="n30001" id="n30001-1" class="required" value="1" />


演示3:

如果我需要所有复选框验证,请您帮忙好吗@火花的