简体   繁体   English

如果使用javascript选中其他复选框,如何选中一个复选框?

[英]How to check one check box if other check boxes checked using javascript?

 var select_all = document.getElementById("select_all"); //select all checkbox var checkboxes = document.getElementsByName("testc"); //checkbox items //select all checkboxes select_all.addEventListener("change", function(e) { for (i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = select_all.checked; } }); for (var i = 0; i < checkboxes.length; i++) { checkboxes[i].addEventListener('change', function(e) { //".checkbox" change //uncheck "select all", if one of the listed checkbox item is unchecked if (this.checked == false) { select_all.checked = false; } //check "select all" if all checkbox items are checked if (document.querySelectorAll('.checkbox:checked').length == checkboxes.length) { select_all.checked = true; } }); }
 <li><input type="checkbox" id="select_all" /> Selecct All</li> <ul> <li><input class="checkbox" type="checkbox" name="testc"> This is Item 1</li> <li><input class="checkbox" type="checkbox" name="testc"> This is Item 2</li> <li><input class="checkbox" type="checkbox" name="testc"> This is Item 3</li> <li><input class="checkbox" type="checkbox" name="testc"> This is Item 4</li> <li><input class="checkbox" type="checkbox" name="testc"> This is Item 5</li> <li><input class="checkbox" type="checkbox" name="testc"> This is Item 6</li> </ul>

The above code is working fine.上面的代码工作正常。 but here the part below is checking the CSS of the checkboxes to apply the condition.但这里下面的部分是检查checkboxesCSS以应用条件。 i want to check the name of the checkboxes .我要检查的名称checkboxes Looking for a solution ?正在寻找解决方案?

//check "select all" if all checkbox items are checked
 if (document.querySelectorAll('.checkbox:checked').length == checkboxes.length) {
     select_all.checked = true;
     }
 });
  1. While change event bubble you can addEventListener on parent element.change事件气泡时,您可以在父元素上添加事件addEventListener器。
  2. Use find() to check if one input is not checked.使用find()检查是否未检查一个输入。
  3. If you want to select by name use input[name="testc"]如果input[name="testc"]选择,请使用input[name="testc"]
  4. What about #select_all state if some inputs are checked?如果检查了某些输入, #select_all状态会怎样?
var checkall = document.getElementById("select_all")
var ul = document.querySelector('ul#checkbox-list')
var checkboxes = Array.from(ul.querySelectorAll('input[name="testc"]')) /* 3 */

checkall.addEventListener('change', () => {
  checkboxes.forEach(elm => (elm.checked = checkall.checked))
})

ul.addEventListener('change', () => { /* 1. */ 
  checkall.checked = !checkboxes.find(elm => !elm.checked) /* 2. */ 
})

stronger example here solving /* 4. */ : https://codepen.io/yukulele/pen/PNNdvw?editors=0010在这里解决/* 4. */更强的例子: https : //codepen.io/yukulele/pen/PNNdvw?editors=0010

If you want to check the checkboxes by their names then change the selector inside querySelectorAll如果querySelectorAll名称选中复选框,请更改querySelectorAll的选择器

if (document.querySelectorAll('[name="testc"]:checked').length == checkboxes.length) {
     select_all.checked = true;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM