Nadine: Radiobutton in Abhängigkeit vom Datum auswählen

Hallo,

ich bin noch eine Anfängerin, was die Programmierung angeht. Ich habe ein Formular mit 12 Radiobuttons erstellt, die in Abhängigkeit vom jeweiligen Monat ausgewählt werden sollen. Es ist kein Problem, dass Datum auszulesen und den Monat/Vormonat zu bestimmen. Nun soll beim Seitenaufruf der Radiobutton, der den Vormonat darstellt, als Defaultwert gesetzt werden. Mit einem zwischengeschalteten Button, der das Übergeben des Werts übernimmt, ist das auch kein Problem. Nur soll der Benutzer keinen Button anklicken müssen,sondern das soll automatisch passieren.

Hier mal kurz ein Beispiel:

function Today()
{
  today = new Date();
  currMonth = today.getMonth();
  checkedMonth = currMonth-1;
  if (currMonth > 1){prevMonth = currMonth - 2}else (prevMonth = 11);
document.Auswahl.M_selection[checkedMonth].checked = true;
}

<form name="Auswahl">
<br>
<br><button type="button" name="Datum" onclick="Today()"><n>today</n></button><br>
<b>Monate</b><br>
  <input type="radio" name="M_selection" value="01">01<br>
  <input type="radio" name="M_selection" value="02">02<br>
  <input type="radio" name="M_selection" value="03">03<br>
  <input type="radio" name="M_selection" value="04">04<br>
  <input type="radio" name="M_selection" value="05">05<br>
</form>

Wie bekomme ich das automatische Setzen des Vormonats beim Aufruf der Seite hin?

Vielen Dank für eure Hilfe.
Nadine

  1. Hi!

    Du suchst Eventhandler, im speziellen onload.

    Gruß

    Martin

    P.S.: Das Datum, das der Benutzer auf seinem Rechner eingestellt hat, muss nicht stimmen, Javascript kann deaktiviert sein => kannst du das nicht serverseitig (z.B. mit PHP) lösen?

    1. Hallo Martin,

      vielen Dank. Es funktioniert. Das Problem mit dem Datum spielt in meinem Fall keine Rolle. Auf die Seite kann man nur über ein kleines Netzwerk zugreifen, in dem alle Rechner beim Hochfahren die Systemzeit des Servers "mitgeteilt" bekommen. Aber die Sache mit dem Javascript und PHP muss ich wohl nochmal überdenken.

      Nochmal vielen Dank für die Hilfe und Gruß,
      Nadine

    2. Hallo,

      ich bin's nochmal. Ich habe jetzt doch noch ein Problem. Ich habe eine zweite Gruppe von Radiobuttons erstellt (Auslesen und Markieren des Jahres) und die Funktion Today() um das Auslesen des Jahres erweitert. Das ganze wird dann wieder einer Variablen zugewiesen ("CurrYear = today.getYear()"). Im Grunde genauso wie beim Auslesen des Monats. Dann möchte ich den entsprechenden Radiobutton auf "checked" setzen. Auch hier wieder der selbe Aufruf (mit dem Namen der neuen Radiobuttongruppe). Aber nun bekomme ich eine Fehlermeldung: "document.Auswahl.Y_selection[] ist null oder kein Objekt". Was soll mir das sagen bzw. warum funktioniert es für die Monate, aber nicht für das Jahr?

      Viele Grüße,
      Nadine

      1. Hi!

        "document.Auswahl.Y_selection[] ist null oder kein Objekt". Was soll mir das sagen bzw. warum funktioniert es für die Monate, aber nicht für das Jahr?

        Das ist eine Fehlermeldung des Internet Explorers. Besser sind die Debugging-Ausgaben vom Mozilla oder Opera, da kann man mehr mit anfangen.

        Da das ganze wahrscheinlich nur ein Tipper ausgelöst hatte, kopiere doch bittte mal deinen Code hier rein, dann schaun wir mal.

        Gruß

        Martin

        1. Hallo Martin,

          hier ist also der Quelltext:

          <script type="text/javascript">
          <!--
          function Today()
          {
            today = new Date();
            currYear = today.getYear();
            currMonth = today.getMonth();
            if (currMonth > 1){checkedMonth = currMonth -1}else (checkedMonth = 11);
          document.Auswahl.P_selection[checkedMonth].checked = true;
          document.Auswahl.Y_selection[currYear].checked = true
          }
          -->
          </script>

          <body onload="Today()">
          <form name="Auswahl">
              <br>
              <TABLE Border="0" cellpadding="5" align="center" >
              <TR valign="top"><TD align="right"><font face="Arial" size="2">
              <b>Period</b><br>
               <input type="radio" name="P_selection" value="01">01<br>
               <input type="radio" name="P_selection" value="02">02<br>
               <input type="radio" name="P_selection" value="03">03<br>
               <input type="radio" name="P_selection" value="04">04<br>
               <input type="radio" name="P_selection" value="05">05<br>
               <input type="radio" name="P_selection" value="06">06<br>
               <input type="radio" name="P_selection" value="07">07<br>
               <input type="radio" name="P_selection" value="08">08<br>
               <input type="radio" name="P_selection" value="09">09<br>
               <input type="radio" name="P_selection" value="10">10<br>
               <input type="radio" name="P_selection" value="11">11<br>
               <input type="radio" name="P_selection" value="12">12<br>
                </TD>
          <TD align="center"><font face="Arial" size="2">
               <b>Year</b><br>
               <input type="radio" name="Y_selection" value="2003">2003<br>
               <input type="radio" name="Y_selection" value="2004">2004<br>
               <input type="radio" name="Y_selection" value="2005">2005<br>
               <input type="radio" name="Y_selection" value="2006">2006<br>
               <input type="radio" name="Y_selection" value="2007">2007<br>
               <input type="radio" name="Y_selection" value="2008">2008<br>
               <input type="radio" name="Y_selection" value="2009">2009<br>
               <input type="radio" name="Y_selection" value="2010">2010<br>
               </TD>
              </Table>
          </body>

          Vielen Dank und Gruß,
          Nadine

          1. Hi!

            today = new Date();  
             currYear = today.getYear();  
             document.Auswahl.Y_selection[currYear].checked = true
            

            Du versuchst also (im Moment) auf document.Auswahl.Y_selection[2005] zuzugreifen. Das wäre dann der zweitausendundsechste Radiobutton mit Namen Y-selection. Du hast aber nur 8 Radiobuttons mit diesem Namen auf deiner Seite.

            Hab gerade mal die Lösung gebastelt:

            function Today()  
            {  
              today = new Date();  
              currYear = today.getYear();  
              currMonth = today.getMonth();  
              if (currMonth > 1){  
                checkedMonth = currMonth -1;  
                checkedYear = currYear - 2003;  
              }else{  
               checkedMonth = 11;  
               checkedYear = currYear - 2004;  
              }  
            document.Auswahl.P_selection[checkedMonth].checked = true;  
              
            document.Auswahl.Y_selection[checkedYear].checked = true;  
            }
            

            Gruß

            Martin

            1. Hi!

              Was mir gerade noch eingefallen ist:

              Wenn du den Radiobuttons entsprechende Label verpasst, wird das ganze benutzerfreundlicher: dann muss man nicht unbedingt den kleinen Button treffen, sondern kann auch den zugehörigen Text anklicken, um den Radiobutton zu aktivieren.

              Beispiel:

              <input type="radio" name="P_selection" value="01" id="P_selection01"><label for="P_selection01">01</label><br>  
              <input type="radio" name="P_selection" value="02" id="P_selection02"><label for="P_selection02">02</label><br>
              

              Gruß
              Martin

            2. Hallo Martin,

              vielen Dank. Klappt jetzt wunderbar. Bin einfach nicht darauf gekommen, dass ich die Jahreszahl übergebe.

              Viele Grüße,
              Nadine