Javascript 选中/取消选中所有复选框功能仅在有多个复选框时才有效

Javascript check/uncheck all checkbox function only works when there is more than one checkbox

本文关键字:复选框 有效 功能 取消 Javascript 选中      更新时间:2023-09-26

我有一系列复选框设置为数组(name="action[])和一个链接到另一个复选框的JavaScript函数来检查/取消选中所有这些复选框。 当至少有两个复选框要选中时,它可以正常工作,但如果只有一个复选框,则它什么也不做。 谁能指出我正确的方向? 谢谢!

.HTML:

<input type="checkbox" name="checkall" id="checkall" class="box" onClick="doCheck(this, 'action');">
<input type="checkbox" name="action[]" id="action" value="' . $something['someid'] . '" class="box">
<input type="checkbox" name="action[]" id="action" value="' . $something['someid'] . '" class="box">

JavaScript:

function doCheck(mainChk, fields) {
  for(i = 0; i < mainChk.form.elements[fields].length; i++) {
    mainChk.form.elements[fields][i].checked = mainChk.checked;
  }
}
<input type="checkbox" name="checkall" id="checkall" class="box">
<input type="checkbox" name="action[]" id="action" value="' . $something['someid'] . '" class="box check-child">
<input type="checkbox" name="action[]" id="action" value="' . $something['someid'] . '" class="box check-child">

如果你想使用jQuery,你可以这样一段代码:

$("#checkall").click(function(){
    if($(this).is(":checked"))
        $(".check-child").attr("checked", "checked");
    else
        $(".check-child").removeAttr("checked");
));