Jquery 要求选中所有复选框

Jquery 要求选中所有复选框,jquery,checkbox,Jquery,Checkbox,因此,我有一个带有复选框的字段,在提交之前需要选中这些复选框。 问题在于,它不是一个固定数量的复选框,因为它取决于从数据库中获取的要检查的值的数量 基本上,复选框的数量从1到9不等 我使用ajax发送这些值,因此我没有在表单中列出“checkbale项”,而是在列表中。像这样的 Unit 1: <input type="checkbox" name="unit[]" value="1"/> Unit 2: <input type="checkbox" name="unit[]"

因此,我有一个带有复选框的字段,在提交之前需要选中这些复选框。 问题在于,它不是一个固定数量的复选框,因为它取决于从数据库中获取的要检查的值的数量

基本上,复选框的数量从1到9不等

我使用ajax发送这些值,因此我没有在表单中列出“checkbale项”,而是在列表中。像这样的

Unit 1: <input type="checkbox" name="unit[]" value="1"/>
Unit 2: <input type="checkbox" name="unit[]" value="2"/>
Unit 3: <input type="checkbox" name="unit[]" value="3"/>
Unit 4: <input type="checkbox" name="unit[]" value="4"/>

<input type="submit" value="register units"/>
if($('form input:checked').length == $('form input:checkbox').length){
//submit
}
第一单元:
第二单元:
第三单元:
第四单元:
问题是:如何确保每次提交前都选中所有复选框。

如下:

if($('input[type="checkbox"]:checked').length == $('input[type="checkbox"]').length){
  //all checkboxes are checked.
}

您还可以使用name属性来使用
$('input[name=“unit[]”和
$('input[name=“unit[]”:checked')

尝试类似的方法

Unit 1: <input type="checkbox" name="unit[]" value="1"/>
Unit 2: <input type="checkbox" name="unit[]" value="2"/>
Unit 3: <input type="checkbox" name="unit[]" value="3"/>
Unit 4: <input type="checkbox" name="unit[]" value="4"/>

<input type="submit" value="register units"/>
if($('form input:checked').length == $('form input:checkbox').length){
//submit
}

在提交处理程序中,选中未选中复选框的长度(如果大于0),然后显示错误消息并阻止默认操作

if($('input[name="unit[]"]').not(':checked').length){
    alert();
    return;
}

签出此演示

您也可以这样做-

     <form name="myForm" action="targetpage.asp" onsubmit="return validateForm();" method="post">  
         Unit 1: <input type="checkbox" name="unit" value="1" />  
         Unit 2: <input type="checkbox" name="unit" value="2" />  
         Unit 3: <input type="checkbox" name="unit" value="3" />  
         Unit 4: <input type="checkbox" name="unit" value="4" />  
         <input type="submit" value="submit" id="XISubmit" />  
     </form>  



 <script>  
     function validateForm() {  
         if (validateCheckbox(document.forms["myForm"]["unit"])) {  
             alert('All good!');  
             return false;  
         }  
         else {  
             alert('Please select all checkboxes.');  
             return false;  
         }  
     }  

     function validateCheckbox(chk) {  
         for (i = 0; i < chk.length; ++i) {  
             if (!chk[i].checked) return false;  
         }  
         return true;  
     }  
 </script>  

第一单元:
第二单元:
第三单元:
第四单元:
函数validateForm(){
如果(validateCheckbox(document.forms[“myForm”][“unit”]){
警惕(“一切正常!”);
返回false;
}  
否则{
警报('请选择所有复选框');
返回false;
}  
}  
函数validateCheckbox(chk){
对于(i=0;i
谢谢,但这会通过在任何给定时间点列出的所有复选框,而不考虑所述复选框的数量吗?我真的不明白这是如何工作的,请您简要解释最后一部分“.not(“:checked”).length)”的作用是什么?@JohnKariuki我希望您清楚第一部分
$(“input[name”)=“单位[]“]”)
…如果是
。不(“:选中”)
将通过只选择未选中的复选框来过滤该集合…因此现在我们有一组未选中的复选框…
。length
将返回集合中的项数。类似于
0
、1、2等。如果全部选中,则它将返回0个+ve int值,该值被视为truthy值,因此它将满足以下条件谢谢你!!这样的辉煌令人钦佩!@JohnKariuki仍然不明白为什么它如此辉煌!我怎么没有想到这一点(