{lang: 'de'}
Flashhilfe.de - Flash Community

Mit Javascript mehrere dynamische Checkboxen kontrollieren

 


AntwortenRegistrieren Seite1  

Spermutz#1
Benutzerbild von Spermutz
Beiträge: 1
Registriert: Dec 2011

29.12.2011, 14:50

Hi @ all...

Habe ein kleines Problem...
Ich muss auf einer Seite mehrere Checkboxen kontrollieren. Und zwar nur ob überhaupt eine gewählt ist. Es geht da um ne Umfrage und es soll mindestens eine Checkbox gewählt sein.

Ich habe auch schon nen funktionierenden Code:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script language="JavaScript">
function checkDruckfarbe()
{
  checker = false;
  for (i=1; i<=4; i++)
  {
  if(document.Auswahl.elements["Auswahl"+i].checked == false)
  {
  checker = false;
  }
  else
  {
  return true;
  }
  }
  if(checker == false)
  {
  alert("Druckfarbe auswaehlen");
  }
}
</script>
</head>
<body>
<form name="Auswahl" onsubmit="return checkDruckfarbe()">
<input type="checkbox" name="Auswahl1" value="Auswahl1"/>
<input type="checkbox" name="Auswahl2" value="Auswahl2"/>
<input type="checkbox" name="Auswahl3" value="Auswahl3"/>
<input type="checkbox" name="Auswahl4" value="Auswahl4"/>
<input type="submit" name="checkit" value="checkit"/>
</form>


Ich bin aber in php und javascript nicht so fit.
Hier wird einfach bei dem Input-Namen von 1 - 4 gezählt bzw. kontrolliert.
Wir haben hier 30 Stück, was aber kein Problem ist, da ich nur die 4 gegen ne 30 im Javascript oben ändern muss.

Unsere Input-Namen werden dynamisch generiert. Sprich
ActionScript:
1<input type="checkbox" name="auswahl[<?=$val['Druckfarbe_ID'];?>]" value="<?=$val['Druckfarbe_ID'];?>">

Die ID´s sind aber durcheinander...also nicht aufwärts oder abwärts gezählt...es gibt 34 Druckfarben und eine Druckfarbe hat mal die ID 34 und eine die ID 99....wurden von uns nicht so vergeben...kam vom Warenwirtschaftssystem.


So sieht es nun auf unserer Seite aus:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<script type="text/javascript">
   function checkDruckfarbe(){
        checker = false;
        for (i=1; i<=99; i++){
           if(document.Auswahl.elements["Druckfarbe"+i].checked == false){
              checker = false;
           }
           else{
              return true;
           }
        }
        if(checker == false){
           alert("Druckfarbe auswaehlen");
        }
     }
</script>


<!-- Das Formular -->
<form action="ancCartFinish.php" method="post" name="Auswahl" onsubmit="return checkDruckfarbe()">

<?php
if(is_array($siebdruckfarben)) {
     $i = 1;
     foreach($siebdruckfarben As $key => $val) {
        if($i == 1) { ?><? } ?>
           
           <div style="float: left; width: 18px; margin: 0 2px 0 0; padding: 0; text-align: center">
              <div class="farbwahl" style="border: solid 1px #000"><a href="#" class="tooltip" title="<?=$val['DFarbname'];?>"><img src="http://schuldruckerei.files-s1.de/images/farbwaehler/<?=$val['Druckfarbe_ID'];?>.png"></a></div>
              <input type="checkbox" style="margin: 4px 0 6px 0; padding: 0" name="Druckfarbe[<?=$val['Druckfarbe_ID'];?>]" value="<?=$val['Druckfarbe_ID'];?>" <? if($druckfarbe[$val['Druckfarbe_ID']] == $val['Druckfarbe_ID']) { ?>checked="checked"<? } ?> />
              </div>
           
        <? if($i == 18) { $i = 1; ?><div class="break"></div><? } else { $i++; }
     }
     
     if($i != 1) { ?><?   }
}
?>

<input type="submit" name="submit" class="ancCartSubmit" value="1">
</form>


Ich habe oben im Javascript das i<=4 in i<=99 geändert. Ich habe den Code so verstanden dass er hier die Input-Namen überprüft und alle bis 99 nimmt. Sprich Druckfarbe1, Druckfarbe2, ..., Druckfarbe99! Deswegen habe ich es bis 99 geschrieben.

Es läuft aber nicht richtig.

1. Habe ich das Problem mit den [] im Input-Namen! Wie kann ich das im Javascript berücksichtigen? Denn hier wird ja momentan nach Druckfarbe+ID ohne Klammer um die ID geprüft.
ActionScript:
1name="Druckfarbe[<?=$val['Druckfarbe_ID'];?>]"


2. Wenn ich keine Druckfarbe selektiere, also nur leere Checkboxen sind, kommt keine Meldung!
Ich vermute das es was mit dem i<=99 im Javascript zu tun hat.
Wir haben 34 Druckfarben mit durcheinander gewürfelten ID´s. Der höchste ID-Wert ist 99.
Es sollen einfach nur alle Checkboxen kontrolliert werden. Sobald eine angehakt ist, soll keine Meldung mehr erscheinen und es kann abgesendet werden.

Wenn ich den Wert im JS von 99 wieder auf 4 Stelle kommt ne Meldung wenn nix angeklickt ist.
Jedoch kommt die auch wenn ich was angeklickt habe, denn ich weiß nicht welche Druckfarbe die ID 1, 2, 3 oder 4 hat. Ist wie gesagt durcheinander. Wenn ich im Quelltext nachsehe kann ich sie finden und wenn ich dann eine von den 4 ID´s anklicke, kommt auch keine Meldung mehr.
Wieso klappt das nicht wenn ich den Wert auf 99 erhöhe?
Weil ich nicht 99 Inputfelder habe sondern nur 34?


Uff...echt ein Roman hier. Aber es ist schwer es in kurzen Sätzen zu erklären :D
Hoffe man versteht was ich will und kann mir helfen.

LG
Schlagwörter: checkbox, JavaScript, PHP
Geändert von Spermutz am 29.12.11 um 15:12 Uhr
aamm#2
Benutzerbild von aamm
Beiträge: 129
Registriert: Jun 2010

29.12.2011, 15:37