Webdesign in Siegen

Checkboxen und Reset im Formular

Fragen zum Thema HTML und CSS können hier gestellt werden

Moderatoren: Basti, Ingo

Checkboxen und Reset im Formular

Beitragvon .wired am 16.03.2008, 01:09

Aloa mal wieder ;)

Ich habe vorerst zwei Fragen.

1. Wenn ich in einem Formular einen Resetbutton unterbringe, wird alles resettet, dabei hätte ich gerne nur einen Teil resettet. Kann man das irgendwie anstellen oder brauche ich dafür zwei Formulare? Und wenn ich zwei Formulare bräuchte, hat jemand eine Idee, wie ich dann beide auslesen könnte mit PHP?

2. Wie kann ich es anstellen, dass beim Anwählen einer Checkbox alle angewählt werden? Seh ich das richtig, dass das nur mit JavaScript funktioniert? Ich hoffe, ich seh das nicht richtig, denn JS ist nicht gerade meine Stärke ;)

MfG .wired :stapelschwein:
Bild Bild
Benutzeravatar
.wired
Mitglied
 
Beiträge: 332
Registriert: 24.06.2007
Wohnort: Diekholzen

Re: Checkboxen und Reset im Formular

Beitragvon Ingo am 16.03.2008, 02:49

Hi.
Zu Frage 2: "Beim Anwählen", das klingt schon sehr nach "Ereignis". Ich denke da in etwa an
folgenden Weg (den ich geklaut habe - bei mir 8) ):

Code: Alles auswählen
JavaScript:

  function doit(obj)
  {
     var status = obj.checked;            // neuer Zustand der gerade angeklickten Checkbox

     var myCBs = document.getElementsByName('farbe[]');       // Liste der Checkboxen

     for (var i=0; i<myCBs.length; i++)
     {
       myCBs[i].checked = status;
     }
  }

HTML:

  <form name="auswahl" method="post" action="#">
    <input type="checkbox" name="farbe[]" value="Blau" onclick="doit(this)" />Blau<br />
    <input type="checkbox" name="farbe[]" value="Violett" /> Violett<br />
    <input type="checkbox" name="farbe[]" value="Rot" /> Rot<br>
  </form>

Wenn man das erste Feld markiert, folgen alle anderen. Das kann man auch variieren (nur beim
Einschalten folgen alle, beim Ausschalten nicht...).

Zu Frage 1: 2 Formulare oder vllt. auch JavaScript: Ein Button ruft eine Funktion, die eine Liste von
Elementen zurücksetzt, ähnlich wie mit den Checkboxen. Buttons funktionieren ja ohnehin nur mit JS,
JS ist also schon aktiv. - 2 Formulare ist aber evtl. einfacher umzusetzen.

Gruß, Ingo :)
Die beste Browserweiche ... sitzt zwischen den Ohren ;o]
Benutzeravatar
Ingo
Moderator
 
Beiträge: 580
Registriert: 01.04.2007
Wohnort: Neuss/NRW

Re: Checkboxen und Reset im Formular

Beitragvon Skywalker am 19.03.2008, 00:13

Mh, wie stellst du dir das vor mit den 2 Forumularen? Die sollen ja beide per PHP dann ausgelesen werden können... Spontan fällt mir nur ein mit Javascript beide zu submitten, aber das funktioniert nicht (gerade ausprobiert^^). Demnach solltest du an eine Lösung mit Javascript bei beiden Problemen denken. Das Prinzip zur Lösung beider Probleme ist gleich. Hier mal ein Auszug aus einem Generator, den ich schon vor Ewigkeiten mal geproggt hab:
Code: Alles auswählen

Javascript:

function checkall(formname,checkname,thestate){
var el_collection=eval("document.forms."+formname+"."+checkname)
for (c=0;c<el_collection.length;c++)
el_collection[c].checked=thestate
}
function decheck(formname,checkname,thestate){
var el_collection=eval("document.forms."+formname+"."+checkname)
for (c=0;c<el_collection.length;c++)
el_collection[c].checked=false
}


HTML:

<form name="config" id="config">
<input type="button" name="Submittdm1" value="alle auswählen" class="button2" onclick="checkall('config','tdm','checked')" /><input type="button" name="Submittdm2" value="alle abwählen" class="button2" onclick="decheck('config','tdm')" /><br />
        <input name="tdmmap1" type="checkbox"  id="tdm" value="mp_breakout" />
        mp_breakout<br />
        <input name="tdmmap2" type="checkbox"  id="tdm" value="mp_brecourt" />
        mp_brecourt<br />

        <input name="tdmmap3" type="checkbox"  id="tdm" value="mp_burgundy" />
        mp_burgundy<br />
        <input name="tdmmap4" type="checkbox"  id="tdm" value="mp_carentan" />
        mp_carentan<br />
        <input name="tdmmap5" type="checkbox"  id="tdm" value="mp_dawnville" />
        mp_dawnville<br />
        <input name="tdmmap6" type="checkbox"  id="tdm" value="mp_decoy" />

        mp_decoy<br />
        <input name="tdmmap7" type="checkbox"  id="tdm" value="mp_downtown" />
        mp_downtown<br />
        <input name="tdmmap8" type="checkbox"  id="tdm" value="mp_farmhouse" />
        mp_farmhouse<br />
        <input name="tdmmap9" type="checkbox"  id="tdm" value="mp_leningrad" />
        mp_leningrad<br />

        <input name="tdmmap10" type="checkbox"  id="tdm" value="mp_matmata" />
        mp_matmata<br />
        <input name="tdmmap11" type="checkbox"  id="tdm" value="mp_railyard" />
        mp_railyard<br />
        <input name="tdmmap12" type="checkbox"  id="tdm" value="mp_toujane" />
        mp_toujane<br />
        <input name="tdmmap13" type="checkbox"  id="tdm" value="mp_trainstation" />
        mp_trainstation<br />
</form>
Was ist ein??? BildBildBildBild??? auf atomarer Ebene?
Benutzeravatar
Skywalker
Mitglied
 
Beiträge: 61
Registriert: 13.03.2008

Re: Checkboxen und Reset im Formular

Beitragvon Ingo am 19.03.2008, 00:56

Hi, Skywalker.

Ja, bei näherem Hinsehen denke ich auch, dass für den teilweisen Reset JS nur die Lösung bleibt;
submit geht halt nur 1 mal pro Dokument, dann isses in der Tat wech :oops: :P .
Mal sehen, ob mir was Elegantes einfällt. Dein Weg enthält übrigens ein "Upps!": die ID "tdm"
wird gleich 13 mal verteilt. - Das funktioniert zwar, aber wohl aus Kulanz seitens der Browser.

Gruß, Ingo :)

Edit: So, hab mal was gebastelt:

Code: Alles auswählen
JS:

  arrToReset = new Array('sorte01','sorte02');       // anpassen
 
  function resetCBs()
  {
    for(i=0; i<arrToReset.length; i++)
     document.getElementById(arrToReset[i]).checked = false;
  }

HTML-Beispiel:

  <form action="#" method="post" name="obst">
    <input type="checkbox" name="sorte[]" value="Apfel" id="sorte01"  /> Apfel  <br />
    <input type="checkbox" name="sorte[]" value="Birne" id="sorte02"  /> Birne  <br />
    ...
    <hr />
    <input type="checkbox" name="sorte[]" value="Pfirsich" /> Pfirsich <br />
    <input type="checkbox" name="sorte[]" value="Zitrone" />  Zitorne  <br />
    ...
    <hr />
    <input type="button" value="Reset oben" onclick="resetCBs()" />
    <input type="submit" value="Abschicken" >
  </form>

Alle Inputs, die zurückgesetzt werden sollen, bekommen eine ID, die dann oben in das Array arrToReset
eingetragen wird. Wenn's nicht allzu viele Inputs sind, hält sich die Handarbeit in Grenzen; dafür ist der
JS-Code sehr 'übersichtlich'. :)
Bei sehr vielen Inputs gibt's noch ne andere Möglichkeit: die Inputs bekommen als "name"entweder
'sorteA[]' oder 'sorteB[]', die sorteA-Inputs werden ähnlich wie oben zurückgesetzt. In PHP hat man dann
die beiden (ja nur künstlich getrennten) Arrays sorteA und sorteB, die man ja dort wieder zusammenfügen
kann. - Näheres bei Bedarf. - Gn8.
Die beste Browserweiche ... sitzt zwischen den Ohren ;o]
Benutzeravatar
Ingo
Moderator
 
Beiträge: 580
Registriert: 01.04.2007
Wohnort: Neuss/NRW

Re: Checkboxen und Reset im Formular

Beitragvon Skywalker am 19.03.2008, 12:20

Nunja, ich sagte ja bereits, dass es schon ne Zeit lang her is wo ich des Ding geproggt hab und da war ich halt mir Javascript noch in den Kinderschuhen :lol:
Was ist ein??? BildBildBildBild??? auf atomarer Ebene?
Benutzeravatar
Skywalker
Mitglied
 
Beiträge: 61
Registriert: 13.03.2008


Zurück zu HTML/CSS

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast