jQuery验证插件复选框组规则

时间:2011-03-15 05:06:32

标签: jquery validation

我正在使用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]'"

不起作用。

3 个答案:

答案 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]”)。