• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mehrere Checkbox Werte zusammenfügen - aber wie?

Status
Für weitere Antworten geschlossen.

Zeschko

Neues Mitglied
Hallo :)
Ich arbeite daran, für ein Forum folgendes zu erstellen:
Man kann in dem Forum Themen-Tags angeben. Ich will, dass User sich aus einem Set von (sagen wir mal) 5 Tags einen oder mehrere Tags aussuchen.
Das Problem was ich jetzt habe:
Wenn ein User Tag 1, Tag 3 und Tag 5 anklickt, wird nur Tag 5 weitergegeben beim Absenden des Themas.

Also dachte ich mir, ich mach das einfach mit JavaScript. Aber um ehrlich zu sein, kratze ich mir da ganz schön am Kopf, weil ich echt nicht gerade super mit JavaScript bin. :neutral:

Was ich mir vorstelle ist sowas in der Art von:

Funktion tagscombine
container für alle ausgewählten Tags ist alltags
wenn tag1 gecheckt ist, alltags + tag1
wenn tag2 gecheckt ist, alltags + tag2
wenn tag3 gecheckt ist, alltags + tag3
wenn tag4 gecheckt ist, alltags + tag4
wenn tag5 gecheckt ist, alltags + tag5

Das würde ich dann per onsubmit aufrufen und ausführen lassen.

Hat jemand gute Ideen? :shock:
 
Wahrscheinlich habe ich um einiges weniger Ahnung als du, aber ich glaube mit Java Script kannst du das nicht machen, da du damit nichts an den Server weitergeben kannst.
Hast du denn allen Chechboxen einen unterschiedlichen Namen gegeben? vielleicht überschreiben sie sich.
 
Wahrscheinlich habe ich um einiges weniger Ahnung als du, aber ich glaube mit Java Script kannst du das nicht machen, da du damit nichts an den Server weitergeben kannst.
Hast du denn allen Chechboxen einen unterschiedlichen Namen gegeben? vielleicht überschreiben sie sich.
Hi!
Nein, das geht auf jeden Fall.
Und ich muss mit dem JS ja nichts an den Server weitergeben. Es ist so:
Normalerweise ist das kein Haufen von Checkboxes sondern ein normaler input type=text mit dem namen "tags".
Was ich will ist, die Checkboxes alle zusammenfassen. Und zwar zu dieser Variable "tags". Man kann ja Formularwerte ohne weiteres per JS manipulieren. Das ist also auf jeden Fall möglich.
Aber ich überlege gerade. Wenn ich den checkboxes allen den gleichen Namen gebe, kann das ja nicht wirklich funktionieren mit der Zusammenfassung per JS. Ich sollte ihnen wohl verschiedene Namen geben und dann das ganze per JS zusammenfügen.
Aber dieses Aneinanderfügen - das ist es, was ich noch nicht ganz raus habe.
 
Entweder, du gibst den Boxen jeweils andere Namen, oder du machst das als Array.

Code:
<form ....>
  <input name="bla[]" ... />
  <input name="bla[]" ... />
  <input name="bla[]" ... />
  <input name="bla[]" ... />
</form>
 
Ich hab's dann anders gelöst.
Und zwar so:

HTML:
<input type="checkbox" id="TagField1" value="Tag1">Tag1
                <input type="checkbox" class="bginput" id="TagField2" value="Tag2">Tag2
                <input type="checkbox" class="bginput" id="TagField3" value="Tag3">Tag3
                <input type="checkbox" class="bginput" id="TagField4" value="Tag4">Tag4
                <input type="checkbox" class="bginput" id="TagField5" value="Tag5">Tag5
                <input type="hidden" name="taglist" id="taglist" value="">
                <script language="JavaScript">
                function testenwirmal() {
                    var TagField1 = document.getElementById('TagField1');
                    var TagField2 = document.getElementById('TagField2');
                    var TagField3 = document.getElementById('TagField3');
                    var TagField4 = document.getElementById('TagField4');
                    var TagField5 = document.getElementById('TagField5');
                    var AllTags = "";
                    if (TagField1.checked) { AllTags = AllTags + TagField1.value + ","; }
                    if (TagField2.checked) { AllTags = AllTags + TagField2.value + ","; }
                    if (TagField3.checked) { AllTags = AllTags + TagField3.value + ","; }
                    if (TagField4.checked) { AllTags = AllTags + TagField4.value + ","; }
                    if (TagField5.checked) { AllTags = AllTags + TagField5.value + ","; }
                    document.getElementById('taglist').value = AllTags;
                }
                </script>
As I said previously the "taglist" input field was originally a normal text input field which I had to convert to a hidden one to hide it from the user. So yeah, that's it. :)
 
Und wenn dein User Javascript deaktiviert hat, guckst du in die Röhre.
Das ist mir klar. Aber es gibt diverse andere Sachen, die ich auf dem Forum mit JavaScript mache. Das eine mehr oder weniger macht die Kuh auch nicht fett.
Hinzu kommt, dass mein Zielpublikum speziell ist und ich davon ausgehen kann, dass das kein Thema sein wird.

Zum Thema Array:
Nein, das geht nicht. Denn das annehmende PHP Script erwartet kein Array sondern einen String, den es dann bearbeitet. Da bleibt nur JavaScript als Lösung.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben