验证所有复选框是否未被选中的快速方法?

时间:2009-05-28 21:56:00

标签: javascript html validation forms input

如果取消选中所有复选框,是否有快速方法或功能可以告诉我真/假?没有通过阵列? (使用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>

8 个答案:

答案 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);
}

Working Demo

答案 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
      }
   }
}