我正在使用jQuery Validate插件,要求在一组复选框中选中至少一个复选框。以下是设置示例:
<input type="checkbox" name="test[name1]" id="testid1" class="required">
<input type="checkbox" name="test[name2]" id="testid2" class="required">
和JS:
$("#myform").validate({
groups: {
checkboxes: "test[name1] test[name2]"
}
}
我已经能够将问题缩小到输入名称中包含“[]”这一事实,我假设它正在弄乱字符串解析名称。我正在使用的平台要求我使用括号。这似乎可能是一个常见的问题,所以也许其他人遇到过它可以帮助我。
作为参考,我试过了:
checkboxes: "testname1 testname2"
有效,但无法使用。
checkboxes: "'test[name1]' 'test[name2]'"
不起作用。
答案 0 :(得分:0)
name
属性的要点是将相关的复选框/单选按钮组合在一起。因此,作为一个组的一组复选框应该都具有相同的name
属性(但每个属性都具有唯一的id
属性)。假设你有这个:
<input type="checkbox" name="test" id="testid1">
<input type="checkbox" name="test" id="testid2">
然后以下JS将起作用:
$(formSelector).validate({
rules: {
test: "required"
},
messages:
test: "Please select an item"
}
});
答案 1 :(得分:0)
没有jQuery的Javascript复选框组检查:
<script>
function checkboxGroup(frm) {
// set send to false first
bSend = false;
// array of all inputs in the form
aInputs = frm.getElementsByTagName("input");
// loop through the inputs array
for(i=0;i<aInputs.length; i++) {
if(
aInputs[i].getAttribute("type")=="checkbox"
&&
aInputs[i].getAttribute("name")=="test[]"
) {
// If one of the checkeboxes named test[]
// is checked, bSend will be set true
if(aInputs[i].checked) bSend = true;
}
}
// If none of the checkboxes named test[] are checked
// bSend will still be false hence not send the form
return bSend;
}
</script>
我用于测试的HTML表单:
<form method="post" onsubmit="return checkboxGroup(this)">
<input type="checkbox" name="test[]" value="name 1">
<input type="checkbox" name="test[]" value="name 2">
<input type="checkbox" name="test[]" value="name 3">
<input type="checkbox" name="mom[]" value="name gg">
<input type="submit" value="test">
</form>
答案 2 :(得分:-2)
我猜你的平台是基于PHP的。 PHP使用[]在提交的表单数据中创建数组的快捷方式很方便,但这些字符在id和name属性中是非法的。
我必须做同样的事情,我找到了一个简单的答案,埋在http://docs.jquery.com/Plugins/Validation/Methods/minlength#length
test: { minLength: 1 }
如果您的复选框都有相同的名称属性(“test”,而不是“test [x]”)。