2 Stimmen

Schneller Weg, um zu überprüfen, ob alle Kontrollkästchen nicht ausgewählt sind?

Gibt es einen schnellen Weg oder eine Funktion, die mir sagt, wahr/falsch, wenn alle Kontrollkästchen abgewählt sind? Ohne durch das Array zu gehen? (mit JS und HTML)

Alle meine Kontrollkästchen haben den gleichen Namen...

<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>

8voto

Quentin Punkte 850700

JQuery würde eine Masse von unnötigen Blähungen für eine Aufgabe dieser trivialen sein. Betrachten Sie es verwenden, wenn Sie es für andere Zwecke ausgeführt werden, aber alles, was Sie brauchen, ist so etwas wie dieses:

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;
}

5voto

Paolo Bergantino Punkte 465120

Man muss sie in einer Schleife durchlaufen. Auch eine Bibliothek wie jQuery wird Schleife durch sie, nur verstecken sie von Ihnen.

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.

4voto

Svante Svenson Punkte 12222

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;
})();

Mit jQuery:

var allischecked = ($("#Form2 input:checkbox:not(checked)").length === 0);

2voto

gahooa Punkte 121696

Zusammenfassend lässt sich sagen, dass dieser Ausschnitt true zurückgibt, wenn alle NICHT angekreuzt sind. Er bricht ab, sobald ein geprüftes gefunden wird.

var a = document.getElementsByName("us");
for(var i=0; i<a.length; i++)
   if(a[i].checked)
      return false;
return true;

(nicht getestet, aber konzeptionell ist es gültig)

0voto

Russ Cam Punkte 120837

Was meinen Sie mit

Ohne durch das Array zu gehen

?

Sie könnten einfach tun

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

Arbeits-Demo

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X