如果取消选中所有复选框,是否有快速方法或功能可以告诉我真/假?没有通过阵列? (使用JS和HTML)
我的所有复选框都有相同的名称......
<form action="/cgi-bin/Lib.exe" method=POST name="checks" ID="Form2">
<input type=checkbox name="us" value="Joe" ID="Checkbox1">
<input type=checkbox name="us" value="Dan" ID="Checkbox2">
<input type=checkbox name="us" value="Sal" ID="Checkbox3">
</form>
答案 0 :(得分:6)
对于这项微不足道的任务来说,jQuery将是一团不必要的臃肿。如果你为其他目的运行它,请考虑使用它,但你需要的只是这样:
function AreAnyCheckboxesChecked () {
var checkboxes = document.forms.Form2.elements.us;
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked) {
return true;
}
}
return false;
}
答案 1 :(得分:5)
你必须循环它们。即使像jQuery这样的库也会遍历它们,只需将它隐藏起来。
var form = document.getElementById('Form2');
var inputs = form.getElementsByTagName('input');
var is_checked = false;
for(var x = 0; x < inputs.length; x++) {
if(inputs[x].type == 'checkbox' && inputs[x].name == 'us') {
is_checked = inputs[x].checked;
if(is_checked) break;
}
}
// is_checked will be boolean 'true' if any are checked at this point.
答案 2 :(得分:4)
JavaScript的:
var allischecked = (function(){
var o = document.getElementById("Form2").getElementsByTagName("input");
for(var i=0,l=o.length;i<l;i++){
o[i].type === "checkbox" && o[i].name === "us" && o[i].checked || return false;
}
return true;
})();
使用jQuery:
var allischecked = ($("#Form2 input:checkbox:not(checked)").length === 0);
答案 3 :(得分:2)
总之,如果未选中所有内容,则此剪切将返回true。一旦找到一个检查过,它就会挽救。
var a = document.getElementsByName("us");
for(var i=0; i<a.length; i++)
if(a[i].checked)
return false;
return true;
(没有测试,但在概念上它是有效的)
答案 4 :(得分:0)
你是什么意思
不通过数组
你可以做到
function check() {
var anyChecked = false;
var form = document.getElementById('Form2');
var checkboxes = form.getElementsByTagName('input');
for(var i=0; i < checkboxes.length; i++) {
if (checkboxes[i].checked) {
anyChecked = true;
break;
}
}
alert("Checkboxes checked? " + anyChecked);
}
答案 5 :(得分:0)
如果你有大量的复选框,你不想循环测试,使用这种方法可能更有效。
var checked = 0;
$("input[type=checkbox]").live("click", function() {
if($(this).attr("checked")) checked++;
else checked--;
}
然后你就可以这样测试了。
if(checked === 0) {
doSomething();
}
答案 6 :(得分:0)
使用jQuery属性checked
的正确解决方案:
$checkboxes = $('#Form2 input:checkbox');
$checkboxes.on('click', checkboxes);
function checkboxes() {
var allChecked = $checkboxes.not(':checked').length == 0;
console.log(allChecked);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<form action="/cgi-bin/Lib.exe" method=POST name="checks" ID="Form2">
<input type=checkbox name="us1" value="Joe" ID="Checkbox1"><label>Joe</>
<input type=checkbox name="us2" value="Dan" ID="Checkbox2"><label>Dan</>
<input type=checkbox name="us3" value="Sal" ID="Checkbox3"><label>Sal</>
</form>
答案 7 :(得分:0)
即使没有循环也更容易
const toggleCheckboxes = checkbox => {
if(checkbox.checked){
return true
}else{
if(document.querySelectorAll(':checked').length === 0){
// All are unchecked
return false
}
}
}