radio und checkbox automatisch setzen

MCIglo

Gesperrt
ich habe das Problem, dass ich ein richtig schönes (und vor allem großes) Formular habe. Darauf befinden sich ~100 checkboxes und radiobuttons. Gibt es nun eine Möglichkeit mit JS (ohne das ganze Dokument nochmal neu zu schreiben - stehe unter Zeitdruck) beim auswählen eines radiobuttons automatisch verschiedene checkboxes und andere radiobuttons zu setzen?

Ich hab auch shcon den Befehl
Code:
<span onclick=(txthardwareneu.value="test");><u>FTP Anmeldung</u></span></p>
in alle möglichen Variationen umgeschrieben, aber es klappt nur mit Textfeldern :(

Über eine Lösung, die darauf aufbaut wäre ich sehr dankbar :D
 
Gut, das funktioniert so weit, Danke,.
Aber wie mache ich das hier:
Code:
  <p>
    <input type="checkbox" name="sonstiges[]" value="Scanner">
    normaler Scanner</p>
  <p>
    <input type="checkbox" name="sonstiges[]" value="Layout Scanner">
    Layout Scanner</p>
  <p>
    <input type="checkbox" name="sonstiges[]" value="s/w-Laserdrucker" checked>
    s/w-Laserdrucker</p>
  <p>
    <input type="checkbox" name="sonstiges[]" value="CD-Brenner">
    CD-Brenner</p>
  <p>
    <input type="checkbox" name="sonstiges[]" value="DVD-Brenner">
    DVD-Brenner</p>
  <p>
    <input type="checkbox" name="sonstiges[]" value="+256MB RAM">
    +256 MB RAM</p>
  <p>
    <input type="checkbox" name="sonstiges[]" value=" ">
    <input type="text" name="txtsonstiges" size="99">

  </p>

Das Array brauch ich aber für das PHP-Script, dass es das auslesen und in die DB schreiben kann.
 
Da geht es über

Code:
document.formularName.elements['sonstiges[]'][i].checked=true;
wobei "i" für den Index des jeweiligen Feldes steht.

Um bspw. alle diese Felder zu checken, kannst du sie auch in ner Schleife durchgehen:
Code:
for(i=0;i<document.formularName.elements['sonstiges[]'].length;++i)
  {
  [document.formularName.elements['sonstiges[]'][i].checked=true;
  }
 
Zuletzt bearbeitet:
Ist es auch möglich, das ein wenig zu formatieren?
Also den Quelltext meine ich
Code:
<span onclick=(document.form.elements['sam[]'][3].checked=true);(document.form.elements['software[]'][5].checked=true);(document.form.elements['software[]'][9].checked=true);(document.form.elements['software[]'][10].checked=true);(document.form.elements['software[]'][11].checked=true);(document.form.elements['software[]'][12].checked=true);(document.form.elements['pc'][0].checked=true);(document.form.elements['monitor'][0].checked=true);(document.form.elements['sonstiges[]'][2].checked=true);(document.form.elements['novell'].checked=true);(document.form.elements['viola'].checked=true);>
Sieht ja doch etwas kompliziert aus.
Vor allem ist das noch lang nicht alles!
Ich muss ja auch noch die Schleife mit unterbringen, da alle nicht benötigten Boxen und Buttons unchecked werden sollen.


wie soll ich eignetlich die schleife da einbinden
entweder der radiobutton is daach nimmer klickbar oder es steht
Code:
for(i=0;i >
davor. funktionieren tuts jedenfalls so nicht :(
 
Zuletzt bearbeitet:
Jo... das könnte man natürlich in eine Funktion auslagern.

Dieser müsstest du in irgendeiner Art als Parameter die zu checkenden Elemente übergeben.

Da du mal nen Element-Index hast, und mal nicht, müsste man das irgendwie in einer Zeichenkette vereinen.

Nen Ansatz wäre zum Bsp. so:
Code:
software[]-[10]
... also zuerst der Name des Elements, dann ein Bindestrich, und dann(falls vorhanden)die Index-Nr. des Elements.
Das würde dann bei deiner Zeile im vorangegangenen Posting so aussehen:
Code:
onclick="check_elements('sam[]-[3]','software[]-[5]','software[]-[9]','software[]-[10]','software[]-[11]','software[]-[12]','pc-[0]','monitor-[0]','sonstiges[]-[2]','novell-','viola-');"
Die Funktion dazu würde dann so aussehen:
Code:
<script type="text/javascript">
<!--
function check_elements()
{
//Das Trennzeichen der Parameter...
//falls in deinen Elementnamen irgendwo ein Bindestrich vorkommt, musst du ein anderes wählen
strDelimiter='-';

objForm=document.form;

//alle Formularelemente in Schleife durchgehen
for(e=0;e<objForm.elements.length;++e)
    {
    CHECK:
    //Prüfen ob checkbox oder radio
    if(objForm.elements[e].type=='checkbox'||objForm.elements[e].type=='radio')
        {
        //Die der Funktion übergebenen Parameter durchgehen
        for(a=0;a<check_elements.arguments.length;++a)
            {
            //Parameter anhand des Trennzeichens splitten
            arrArguments=check_elements.arguments[a].split(strDelimiter);

            //Ahand der beiden Elemente des zuvor gebildeten Arrays ein Objekt erstellen
            objElement=eval('objForm.elements["'+arrArguments[0]+'"]'+arrArguments[1]);

            //Wenn das zuvor erzeugte Objekt mit dem aktuellen Formularelement übereinstimmt....
            //Formularelement checken und Schleife "CHECK" abbrechen
            if(objForm.elements[e]==objElement)
                {
                objForm.elements[e].checked=true;
                break CHECK;
                }
            //Andernfalls Element "unchecken"
            objForm.elements[e].checked=false;
            }
        }
    }
}
//-->
</script>

Das Ganze sieht dann so aus:
 
OMG!
ich danke dir zunächst einmal für deine Mühen, aber ich denke, das werde ich im Rahmen der Projektdurchführung noch nicht einbaun, jedoch als weiteres Feature für die Wartung beiseite legen.
 

Neue Beiträge

Zurück