Sebastian Becker: Radio Buttons ansprechen

Hallo,

ich sichere die Nutzereingaben in einem Formular zur späteren Weiterverwendung mit Hilfe von Cookies.

Beim Aufrufen eines weiteren Formulars mit teilweise identischen Feldern sollen die schon einmal eingegebenen Werte automatisch eingegeben werden.

Dazu gehe ich onLoad mit einer Schleife durch alle Felder und rekonstruiere die Werte mit den in den entsprechenden Cookies gespeicherten Informationen.

Das funktioniert im Prinzip auch prima, bis auf die Radioboxen - die werden aus mir unerfindlichen Gründen überhaupt nicht erkannt (s.u.) ...

Was mache ich falsch?

Danke für alle Hinweise,

Sebastian

Mit einem funktionierenden Skript oder anderen Lösungsansätzen wäre mir auch gedient ...

------------------------- Code -------------------------

for(i=0;i<document.forms.length;i++) {
for(j=0;j<document.forms[i].elements.length;j++) {

cookie_name = document.forms[i].name + "_" + document.forms[i].elements[j].name;
val = getCookie(cookie_name);
if(val) {

if((document.forms[i].elements[j].type=="text")||(document.forms[i].elements[j].type=="textarea")){
document.forms[i].elements[j].value = val;
}
else if(document.forms[i].elements[j].type.indexOf("select")!=-1) {
document.forms[i].elements[j].selectedIndex = val;
}

else if(document.forms[i].elements[j].type=="checkbox") {
if(val=="true") {document.forms[i].elements[j].checked = true;} else {document.forms[i].elements[j].checked = false;}
}

else if(document.forms[i].elements[j].type=="radio") {
// dieser Punkt wird überhaupt nicht erreicht, obwohl definitiv Radioboxen vorhanden sind ...
if(document.forms[i].elements[j].value==val)document.forms[i].elements[j].checked = true;
}

}
}
}

...

Raucher <input type="radio" value="Raucher" name="smoker">
Nichtraucher <input type="radio" value="Nichtraucher" name="smoker">
egal <input type="radio" value="nopref" name="smoker" checked>

  1. Hallo Sebastian

    wie hast du überprüft, ob der genannte Punkt erreicht wird?
    Ich nehm mal an mit einem alert?

    was sagt denn die Javascript Konsole?
    Ich fürchte mal nix?

    Vielleicht ein Fehler im HTML des Dokumentes? (Sonst fällt mir leider nichts mehr ein - ich hab mir mal ein abgespecktes Beispiel zusammengebastelt, das einwandfrei funktioniert)

    Liebe Grüße
    mbr

    1. Hallo mbr,

      wie hast du überprüft, ob der genannte Punkt erreicht wird?
      Ich nehm mal an mit einem alert?

      genau ...

      was sagt denn die Javascript Konsole?
      Ich fürchte mal nix?

      Habe ich bislang gar nicht getestet, weil ja weder etwas ausgegeben wurde noch ein Fehler aufgetreten ist ...

      Vielleicht ein Fehler im HTML des Dokumentes?

      Das Formular funktioniert zwar einwandfrei und ich habe bislang auch noch keinen Fehler entdeckt, aber ich werde es nochmal genau überprüfen ...

      (Sonst fällt mir leider nichts mehr ein - ich hab mir mal ein abgespecktes Beispiel zusammengebastelt, das einwandfrei funktioniert)

      Das ist nett, danke, und deutet vielleicht darauf hin, daß die Radioboxen nicht erkannt werden, weil mit dem HTML-Code etwas nicht stimmt - ich kann aber nach wie vor nichts finden. Wenn Du möchtest, kannst Du ja mal selber einen Blick auf den Original-Code des Formulars werfen (testen durch Umschalten auf die englischsprachige Version)...

      Grüße

      Sebastian

      1. Hallo Sebastian,

        na, den Part mit javascript hat ja nun mit Struppi schon ein kompetenterer als ich übernommen. Habe mir die Seite mal angeschaut. Sie gefällt mir ziemlich gut. Allerdings nur solange ich sie im Internet Explorer anschaue. Im Firefox 1.0.6 gibt es noch einige (größere?) Probleme bei der Darstellung. Das Hauptmenue oben sieht irgendwie seltsam aus. (Ich versuche mal einen Screenshot anzuhängen...). Die Anordnung führt auch dazu, dass man den Punkt "über uns" nicht benutzen kann.

        Auch die Seite mit den Wochenkarten ist etwas zerrupft.

        Wäre schade, wenn das so bleibt, weil mir die Seite an sich gut gefällt und ich es toll finde, wieviel Zeit und Arbeit du da investiert hast.

        Bloss am Rande: Das sagt der Validator zur Seite (obwohl das nur die Einstiegsseite mit einer Umleitung ist - wenn ich das richtig verstehe)

        Liebe Grüße

        mbr

        P.S.: hab den Titel und das Thema mal geändert (obwohl ich mir nicht sicher bin, ob HTML als Themenbereich passt. Vielleicht doch eher MEINUNG - oder CSS?)

        1. Hallo mbr,

          Im Firefox 1.0.6 gibt es noch einige (größere?) Probleme bei der Darstellung. [...] Das Hauptmenue oben sieht irgendwie seltsam aus.

          ja, das ist mir bewusst - aber gut, daß Du mich noch mal mit der Nase drauf stösst. Das hat mich schon einige Nerven gekostet und ich habe die Ursache immer noch nicht gefunden - vielleicht hast Du oder ein anderer Forumsteilnehmer noch eine Idee?! Browser und CSS-Darstellung - grrrrrrr ...

          Auch die Seite mit den Wochenkarten ist etwas zerrupft.

          Die werden übrigens aus Excel-Dateien generiert sowie mit CSS formatiert, und die Dollarpreise werden aktuell umgerechnet. Bei der Darstellung spinnt mal ausnahmsweise der Firefox, glaube ich. Das Fixen wird wohl auch wieder einige Mühe kosten ...

          Wäre schade, wenn das so bleibt, weil mir die Seite an sich gut gefällt und ich es toll finde, wieviel Zeit und Arbeit du da investiert hast.

          Danke - ich habe tatsächlich schon eine Menge daran gebastelt, bin aber noch lange nicht fertig ...

          Das sagt der Validator zur Seite (obwohl das nur die Einstiegsseite mit einer Umleitung ist - wenn ich das richtig verstehe)

          Auch ein guter Hinweis. Bei den eigentlichen Seiten sieht es wohl noch schlimmer aus - das muss ich noch abarbeiten!

          hab den Titel und das Thema mal geändert (obwohl ich mir nicht sicher bin, ob HTML als Themenbereich passt. Vielleicht doch eher MEINUNG - oder CSS?)

          CSS ist sicherlich ganz passend - Bewertungen und Verbesserungsvorschläge nehme ich aber auch gerne entgegen  :-)  ...

          Grüße

          Sebastian

  2. else if(document.forms[i].elements[j].type=="radio") {
    // dieser Punkt wird überhaupt nicht erreicht, obwohl definitiv Radioboxen vorhanden sind ...
    if(document.forms[i].elements[j].value==val)document.forms[i].elements[j].checked = true;

    Das Problem ist, du kannst Radioboxen so nicht ansprechen. Da es eine Sammlung von einzelnen Radioboxen ist muss du alle durchlaufen und dann den mit dem entsprechndem Wert checken.

    ...
    else if(document.forms[i].elements[j].type=="radio")
    {
    var radio = document.forms[i].elements[j];
    for(var k = 0; k < radio.length; k++)
    radio[k].checked = radio[k].value == val;
    }

    Struppi.

    1. Hallo,Struppi,

      danke für Deinen vermutlich richtigen Lösungsansatz, der aber bislang noch nicht funktioniert, da Deine innere Schleife z.Zt. (wie auch der entsprechende Teil in meinem Script) gar nicht erst abgearbeitet wird.

      Dafür habe ich bislang noch keine Lösung gefunden. Ich muss das Skript wohl mal isolieren - oder hast Du noch eine Idee?

      Danke, Grüße aus Berlin,

      Sebastian

      else if(document.forms[i].elements[j].type=="radio") {
      // dieser Punkt wird überhaupt nicht erreicht, obwohl definitiv Radioboxen vorhanden sind ...
      if(document.forms[i].elements[j].value==val)document.forms[i].elements[j].checked = true;

      Das Problem ist, du kannst Radioboxen so nicht ansprechen. Da es eine Sammlung von einzelnen Radioboxen ist muss du alle durchlaufen und dann den mit dem entsprechndem Wert checken.

      ...
      else if(document.forms[i].elements[j].type=="radio")
      {
      var radio = document.forms[i].elements[j];
      for(var k = 0; k < radio.length; k++)
      radio[k].checked = radio[k].value == val;
      }