2011-03-15 66 views
0

我正在使用jQuery验证插件要求在一组复选框中至少选中一个复选框。下面是设置的例子:jQuery验证插件复选框组规则

<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]'" 

不起作用。

回答

-2

我会猜测你的平台是基于PHP的。使用[]在提交的表单数据中创建数组的PHP的快捷方式很方便,但这些字符在id和name属性中是非法的。

我必须做同样的事情,我发现一个简单的答案埋在http://docs.jquery.com/Plugins/Validation/Methods/minlength#length

test: { minLength: 1 } 

如果你的复选框都相同的名称属性(“测试”,而不是“测试[ X]”)。

+2

括号在'@ name'中完全合法属性在所有版本的HTML中。从HTML5开始,它们在'@ id'属性中也是合法的。 – jasonkarns 2012-10-01 18:29:18

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" 
    } 
}); 
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>