Uschi Renziehausen: Formular - max. Checkboxen aktivierung

Beitrag lesen

Hallo,

das folgende Script lässt deine Submit-Routine in Ruhe und aktiviert respektive deaktiviert Checkboxen onclick je nach bereits gewählter Anzahl. Voraussetzung ist, dass deine Seite nicht unter Netscape 4.x laufen muss.
Ab IE 5.0 und Netscape 6 / Mozilla haben Formularelemente eine Eigenschaft disabled, und die macht sich das Script zu Nutze. Außerdem erfolgt der Zugriff auf die Checkboxen über DOM-Syntax (document.getElementsByName("ck"), und auch das würden ältere Browser nicht verstehen.
Gucks dir mal an und schau, ob du was damit anfangen kannst.

Liebe Grüße, Uschi

Anbei der Code:

<html>
<head>
<title>Checkboxen deaktivieren</title>
<script language="JavaScript">
var maxChecks = 2;
function limitChecks(el) {
   /* Die folgende Zeile sammelt dir alle Elemente mit dem Namen "ck"
    * in einem Array mit dem Namene cks
    */
  cks = document.getElementsByName("ck");

/* Variante 1: Userlein hat eine Checkbox aktiviert */
  if(el.checked == true) {
    /* Checken, wieviele Checkboxen bereits checked sind */
    var currentChecks = 0;
    for(var i=0; i<cks.length; i++) {
      if(cks[i].checked == true) currentChecks++;
    }
    /* Wenn die erlaubte Anzahl von Checks erreicht ist, werden
     * alle noch nicht geckeckten auf disabled gesetzt
     */
    if(currentChecks == maxChecks) {
      for(var i=0; i<cks.length; i++) {
        if(!cks[i].checked) cks[i].disabled = true;
      }
    }
  /* Variante 2: Userlein hat eine Checkbox deaktiviert.
   * In diesem Falle werden alle gesperrten Boxen wieder freigeschaltet.
   */
  } else {
    for(var i=0; i<cks.length; i++) {
      if(cks[i].disabled) cks[i].disabled = false;
    }
  }
}
</script>
</head>
<body>
<form id="myForm">
<p>Bitte nicht mehr als zwei Checkboxen ankreuzen.</p>
<input type="checkbox" name="ck" value="1" onclick="limitChecks(this)" /> Checkbox 1<br />
<input type="checkbox" name="ck" value="2"  onclick="limitChecks(this)" /> Checkbox 2<br />
<input type="checkbox" name="ck" value="3"  onclick="limitChecks(this)" /> Checkbox 3<br />
<input type="checkbox" name="ck" value="4"  onclick="limitChecks(this)" /> Checkbox 4<br />
</form>
</body>
</html>