EKKi: checkboxen nicht alle auswählen

Beitrag lesen

Mahlzeit seos2k,

Ja, die antwort hat mir nicht soviel geholfen,

Warum nicht? Hast Du die verlinkten Abschnitte von SELFHTML gelesen? Hast Du sie auch verstanden? Was sind Deine konkreten Probleme bei der Umsetzung?

if(document.F1.R.checked == true) { count++; }
if(document.F1.G.checked == true) { count++; }
if(document.F1.B.checked == true) { count++; }
if(document.F1.Y.checked == true) { count++; }
if(document.F1.P.checked == true) { count++; }
if(document.F1.O.checked == true) { count++; }

Das ist zwar nicht falsch, aber doch unelegant. Redundanter Code ist zu vermeiden. Redundanter Code ist zu vermeiden.

if(count > maxchecked) {
eval('document.F1.' + which + '.checked = false');

"eval() is evil!" - immer! Ganz besonders jedoch, wenn es absolut überflüssig ist. Wie in diesem Fall.

Mit <http://de.selfhtml.org/javascript/objekte/elements.htm@title=Schema 4> könntest Du viel eleganter auf das von Dir gewünschte Formularelement zugreifen. Noch besser wäre allerdings, wenn Du statt des Namens des aktuellen Elements einfach eine Referenz darauf an die Funktion übergibst:

<script type="text/javascript">[code lang=javascript]  
  
function CountChecks(chk) {  
  // Übergabeparameter ist eine Referenz auf die angeklickte Checkbox  
  var max = 3;  
  var count = 0;  
  
  for (var i = 0; i < chk.form.elements.length; i++) {  
  // Einmal durch alle Elemente des zur angeklickten Checkbox gehörenden Formulars laufen  
    var elm = chk.form.elements[i];  
  
    // Wenn es sich um eine Checkbox mit der gleichen Klasse wie die angeklickte Checkbox handelt, soll geprüft werden, ob sie schon angekreuzt ist  
    if (elm && (elm.nodeName = 'INPUT') && (elm.type = 'checkbox') && (elm.className = chk.className) && elm.checked) {  
      count++;  
    }  
  }  
  
  if (count > max) {  
    chk.checked = false;  
  }  
}

</script>
[...]
<form>
<input type="checkbox" name="R" id="R" value="red" class="color" onclick="CountChecks(this);"><label for="R">Red</label>
<input type="checkbox" name="G" id="G" value="green" class="color" onclick="CountChecks(this);"><label for="G">Green</label>
<input type="checkbox" name="B" id="B" value="blue" class="color" onclick="CountChecks(this);"><label for="B">Blue</label>
<input type="checkbox" name="Y" id="Y" value="yellow" class="color" onclick="CountChecks(this);"><label for="Y">Yellow</label>
<input type="checkbox" name="P" id="P" value="purple" class="color" onclick="CountChecks(this);"><label for="P">Purple</label>
<input type="checkbox" name="O" id="O" value="orange" class="color" onclick="CountChecks(this);"><label for="O">Orange</label>
</form>[/code]

kennt jemand einen noch simpleren weg oder kann das ganze hier noch vereinfachen? bin unerfahren und hab nicht die zeit mich komplett einzuarbeiten

Ausnahmsweise mal - Du solltest das Einarbeiten aber dringend nachholen.

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|