Checkboxen anklicken begrenzen hat einen Bug
Axel
- javascript
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 </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 </td>
<td class="txt11sw"><input type="checkbox" name="arFunkEmph[6]" value="Name 7" disabled onChange="countActivate(this)"> </td>
</tr>
</table>
</td>
<td valign="top"> </td>
<td valign="top"> </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="Übernehmen"> </td>
</tr>
</table>
</form>
</body>
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
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
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
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";
}
}