Axel: Checkboxen anklicken begrenzen hat einen Bug

Warum wird mein onChange beim countActivate ignoriert, wenn ich die checkBox zum ckName... ändere???
und

kann mir jemand helfen zu dem Problem, dass bei Aktivierung der 6.Checkbox der letzte Wert in der Liste überschrieben wird?
Stehe hier echt auf dem Schlauch.

Axel

<html>
<head>
  <title>CheckBoxenTest</title>

<script language="javascript">
<!--
function checkActivate(objekt,Ziel)
{
  objekt.checked==true?'' : Ziel.checked=false;
  objekt.checked==true?Ziel.disabled=false : Ziel.disabled=true;count = 0;
}

function countActivate(Ziel)
{
  max_erlaubt = 5;
 //alert(document.forms[0].elements['arFunkEmph[3]'].checked);
count = 0;
document.forms['form1'].elements['fListe'].value = "";
  for (i=0;i<7;i++)
 {
  if (document.forms[0].elements['arFunkEmph['+i+']'].checked == true) count++;
  if (count > max_erlaubt)
  {
   alert("Es sind nur maximal "+max_erlaubt+" Eigenschaften möglich auszuwählen.");
   Ziel.checked = 0;
   break;
  }
  if (document.forms[0].elements['arFunkEmph['+i+']'].checked == true)
   document.forms[0].elements['fListe'].value += count+'.'+document.forms[0].elements['arFunkEmph['+i+']'].value+"\r\n";
 }
}
//-->
</script>

</head>
<body bgcolor="C7C7C7" leftmargin="0">
<form name="form1" action="checkBoxenTest.html" method="POST">

<table align="center" border="0" cellpadding="2" cellspacing="0">
 <tr>
  <td valign="top">

<table align="center" border="0" cellpadding="2" cellspacing="0">
 <tr bgcolor="#BECAD8">
   <td><input type="checkbox" name="ckName1" value="1"  onClick="checkActivate(this,document.forms[0].elements['arFunkEmph[0]']);">
     </td>
  <td class="txt11sw">Name 1 </td>
  <td class="txt11sw"><input type="checkbox" name="arFunkEmph[0]" value="Name 1" disabled onChange="countActivate(this)"> </td>
 </tr>

<tr bgcolor="#F3F5F8">
  <td>
   <input type="checkbox" name="ckName2" value="1"  onClick="checkActivate(this,document.forms[0].elements['arFunkEmph[1]']);">
  </td>
  <td class="txt11sw">Name 2</td>
  <td class="txt11sw"><input type="checkbox" name="arFunkEmph[1]" value="Name 2" disabled onChange="countActivate(this)"> </td>
 </tr>

<tr bgcolor="#BECAD8">
  <td>
   <input type="checkbox" name="ckName3" value="1" checked onClick="checkActivate(this,document.forms[0].elements['arFunkEmph[2]']);">
  </td>
  <td class="txt11sw">Name 3</td>
  <td class="txt11sw"><input type="checkbox" name="arFunkEmph[2]" value="Name 3" checked onChange="countActivate(this)"> </td>
 </tr>

<tr bgcolor="#F3F5F8">
  <td><input type="checkbox" name="ckName4" value="1"  onClick="checkActivate(this,document.forms[0].elements['arFunkEmph[3]']);">
  </td>
  <td class="txt11sw">Name 4</td>
  <td class="txt11sw"><input type="checkbox" name="arFunkEmph[3]" value="Name 4" disabled onChange="countActivate(this)"> </td>
 </tr>

<tr bgcolor="#BECAD8">
  <td><input type="checkbox" name="ckName5" value="1" checked onClick="checkActivate(this,document.forms[0].elements['arFunkEmph[4]']);"> </td>
  <td class="txt11sw">Name 5 </td>
  <td class="txt11sw"><input type="checkbox" name="arFunkEmph[4]" value="Name 5" checked onChange="countActivate(this)"> </td>
 </tr>

<tr bgcolor="#F3F5F8">
  <td><input type="checkbox" name="ckName6" value="1" checked onClick="checkActivate(this,document.forms[0].elements['arFunkEmph[5]']);"> </td>
  <td class="txt11sw">Name 6&nbsp; </td>
  <td class="txt11sw"><input type="checkbox" name="arFunkEmph[5]" value="Name 6" checked onChange="countActivate(this)"> </td>
 </tr>

<tr bgcolor="#BECAD8">
  <td><input type="checkbox" name="ckName7" value="1"  onClick="checkActivate(this,document.forms[0].elements['arFunkEmph[6]']);">  </td>
  <td class="txt11sw">Name 7&nbsp; </td>
  <td class="txt11sw"><input type="checkbox" name="arFunkEmph[6]" value="Name 7" disabled onChange="countActivate(this)"> </td>
 </tr>
</table>

</td>
  <td valign="top">&nbsp;  </td>

<td valign="top">&nbsp;  </td>
  <td class="txt11sw" valign="top">
   <b>Highlights:</b><br><br>
  <textarea class="formgrey" name="fListe" cols="20" rows="7">1.Name 3
2.Name 5
3.Name 6
   </textarea>
  </td>
 </tr>

<tr height="20">
  <td align="center" colspan="7"><input class="formular" type="submit" value="&Uuml;bernehmen">  </td>
</tr>
</table>

</form>
</body>

  1. Hi Axel,

    Warum wird mein onChange beim countActivate ignoriert, wenn ich die checkBox zum ckName... ändere???

    onChange wird erst ausgeführt, wenn die checkbox wieder verlassen wird -> click drauf und drücke dann die Tabtaste. Lösung: Nimm onClick.

    kann mir jemand helfen zu dem Problem, dass bei Aktivierung der 6.Checkbox der letzte Wert in der Liste überschrieben wird?
    Stehe hier echt auf dem Schlauch.

    Kann ich nicht nachvollziehen. Welcher Browser?

    Grüße
    Frank

    1. Hi Axel,

      Warum wird mein onChange beim countActivate ignoriert, wenn ich die checkBox zum ckName... ändere???

      onChange wird erst ausgeführt, wenn die checkbox wieder verlassen wird -> click drauf und drücke dann die Tabtaste. Lösung: Nimm onClick.

      »»
      dann müsste ich onClick bei der anderen Reihe der CheckBox anwenden.

      kann mir jemand helfen zu dem Problem, dass bei Aktivierung der 6.Checkbox der letzte Wert in der Liste überschrieben wird?
      Stehe hier echt auf dem Schlauch.

      Kann ich nicht nachvollziehen. Welcher Browser?

      Wenn ich eine sechste Checkbox anklicke wird in der Liste der 5. Eintrag mit dem Wert der angeklickten Checkbox überschrieben.
      Beim Firefox, aber auch im IE.

      Grüße
      Frank

      1. Hi Axel,

        dann müsste ich onClick bei der anderen Reihe der CheckBox anwenden.

        ???? Wieso? Du kannst onCLick auf jedem Element anwenden.

        Wenn ich eine sechste Checkbox anklicke wird in der Liste der 5. Eintrag mit dem Wert der angeklickten Checkbox überschrieben.
        Beim Firefox, aber auch im IE.

        Jetzt habe ich das Problem verstanden. Nicht die Box Nr, 6 sondern die sechste angeklickte.
        Du musst einfach zählen, _bevor_ du den Wert für die textarea neu ermitelst:

        function countActivate(Ziel){
        max_erlaubt = 5;
        count = 0;
        for (i=0;i<7;i++)
         if (document.forms[0].elements['arFunkEmph['+i+']'].checked == true) count++;
        if (count > max_erlaubt)
        {
         alert("Es sind nur maximal "+max_erlaubt+" Eigenschaften möglich auszuwählen.");
         Ziel.checked = 0;
         return;
        }

        document.forms['form1'].elements['fListe'].value = "";
          for (i=0;i<7;i++)
         {
          if (document.forms[0].elements['arFunkEmph['+i+']'].checked == true)
           document.forms[0].elements['fListe'].value += count+'.'+document.forms[0].elements['arFunkEmph['+i+']'].value+"\r\n";
         }
        }

        Grüße
        Frank

        1. War vorher auch in der Schleife. Du hast die Schleife geteilt und das Listenfeld dazwischengenommen. Aber so funktioniert es - auch mit dem onClick nachrüsten. VIELEN DANK.

          Eine Sache bekomme ich trotzdem noch nicht gebacken.
          Warum kann ich in der For-Schleife nicht

          statt
          i<7
          einfach i< document.forms[0].elements['arFunkEmph'].length

          schreiben???
          Fehler: document.forms[0].elements.arFunkEmph has no properties

          vollständige Funktion:

          function countActivate(Ziel){
          max_erlaubt = 5;
          count = 0;
          for (i=0;i<7;i++)
           if (document.forms[0].elements['arFunkEmph['+i+']'].checked == true) count++;
          if (count > max_erlaubt)
          {
           alert("Es sind nur maximal "+max_erlaubt+" Eigenschaften möglich auszuwählen.");
           Ziel.checked = 0;
           return;
          }

          document.forms['form1'].elements['fListe'].value = "";
            for (i=0;i<7;i++)
           {
            if (document.forms[0].elements['arFunkEmph['+i+']'].checked == true)
             document.forms[0].elements['fListe'].value += count+'.'+document.forms[0].elements['arFunkEmph['+i+']'].value+"\r\n";
           }
          }