多个动态创建的复选框或无线组的jquery验证程序
我有一个表单,它包含多组复选框和/或无线组,这些复选框和/或无线组是根据sql数据动态创建的。我需要验证每个组中是否至少选中了一个复选框(或单选按钮)。 HTML输出与此类似:多个动态创建的复选框或无线组的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="
<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:如果我需要所有复选框验证,请您帮忙好吗@火花的