Ann: Wochtag aus Datum resultieren

Hallöchen,

hab da mal eine Frage.
Ich hab da ein Javascript, wo sich aus der Eingabe des Datums der Wochtag ergibt.
Dabei gab es für das Datum aber drei Felder (Tag, Monat, Jahr), nun habe ich nur ein Feld für das Datum und möchte wissen, ob Javascript trotzdem dieses Feld so interpretieren kann, dass es den Wochtag errechnet.

Ich danke euch für die Hilfe!
Ann

Hier mal die Funktionen:

function SagDat(tag,mon,jah)
{ if (document.thueForm.tag.value == "" || document.thueForm.mon.value == "" || document.thueForm.jah.value == "")
   { alert("Bitte überprüfen Sie ihre Eingabe.");
        if (document.thueForm.tag.value == "")
   { document.thueForm.tag.select();
           document.thueForm.tag.focus();
     return false;
   }
  if (document.thueForm.mon.value == "")
   { document.thueForm.mon.select();
           document.thueForm.mon.focus();
     return false;
   }
  if (document.thueForm.jah.value == "")
   { document.thueForm.jah.select();
           document.thueForm.jah.focus();
     return false;
   }
   }
  if ((tag != '') && (mon != '') && (jah != ''))
   { var Jetzt = new Date(jah,mon-1,tag);
     var ReturnValue ='';
  if (isNaN(Jetzt))
      { alert('Bitte geben Sie ein gültiges Datum ein.');
        document.thueForm.tag.select();
        document.thueForm.tag.focus();
      }
     else
      { var Tag = Jetzt.getDate();
        var Monat = Jetzt.getMonth() + 1;
        var Jahr = Jetzt.getFullYear();
        if (Jahr<999)
         { Jahr=Jahr+1900;
         }
        document.thueForm.tag.value = Tag ;
        document.thueForm.mon.value = Monat ;
        document.thueForm.jah.value = Jahr ;
        SagTag(Tag,Monat,Jahr);
     }
   }
}
 function SagTag(tag,mon,jah)
 { var jetzt = new Date(jah,mon-1,tag);
   var WochenTag = new Array ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
   document.thueForm.wochentag.value = WochenTag[jetzt.getDay()];
 }

  1. hi,

    Dabei gab es für das Datum aber drei Felder (Tag, Monat, Jahr), nun habe ich nur ein Feld für das Datum und möchte wissen, ob Javascript trotzdem dieses Feld so interpretieren kann, dass es den Wochtag errechnet.

    function SagDat(tag,mon,jah)

    das kommt doch darauf an, wie Du die Daten an die Funktion übergibst. Wenn sie bisher funktioniert hat, sollte sie es auch in Zukunft tun. Nur: hier übergibst Du 3 Parameter (wahrscheinlich aus den ursprünglichen 3 Feldern). In Zukunft mußt Du ihr entweder einen übergeben und diesen mit parameter.split('.') am Trennzeichen (hier ein Punkt) in die gewünschten 3 Variablen aufteilen oder eine Funktion vorschalte, die die Aufteilung übernimmt und aus dieser heraus die Funktion SagDat(par1, par2, par3) aufrufen.

    Das scheint mir JavaScript-Grundlage - hast Du diese Funktion überhaupt selbst geschrieben? ,-)

    Gruß, Andreas

    1. Hi

      das kommt doch darauf an, wie Du die Daten an die Funktion übergibst. Wenn sie bisher funktioniert hat, sollte sie es auch in Zukunft tun. Nur: hier übergibst Du 3 Parameter (wahrscheinlich aus den ursprünglichen 3 Feldern). In Zukunft mußt Du ihr entweder einen übergeben und diesen mit parameter.split('.') am Trennzeichen (hier ein Punkt) in die gewünschten 3 Variablen aufteilen oder eine Funktion vorschalte, die die Aufteilung übernimmt und aus dieser heraus die Funktion SagDat(par1, par2, par3) aufrufen.

      Davon hab ich schon mal was gehört, hat jemand mal einen Tip, wo ich das finde bzw. wie das gemacht wird?

      Das scheint mir JavaScript-Grundlage - hast Du diese Funktion überhaupt selbst geschrieben? ,-)

      Hab nie gesagt, dass ich alles selbst geschrieben habe. Sie ist teils von mir.
      Als ich die benötigte hatte ich gerade mit Javascript angefangen und jetzt bin ich über die Anfänge hinaus. :-)

      Da fällt mir noch was ein, kann ich eine Funktion über das Feld legen, so dass ich beim Eintippen die Punkte nicht mehr setzten muss???

      Danke für eure Hilfe,
      Johanna

      1. ...SagDat(par1, par2, par3) aufrufen.
        Davon hab ich schon mal was gehört, hat jemand mal einen Tip, wo ich das finde bzw. wie das gemacht wird?

        ja, SelfHTML lesen

        Hab nie gesagt, dass ich alles selbst geschrieben habe.

        muss man ja auch nicht, aber wenn man den 'Leihcode' nicht durchschaut ist das mit dem Helfen etwas schwierig, würde nämlich im Ernstfall darauf hinauslaufen, daß jemand Dir den Kram komplett schreibt.

        Da fällt mir noch was ein, kann ich eine Funktion über das Feld legen, so dass ich beim Eintippen die Punkte nicht mehr setzten muss???

        schein mir schwierig - ein 'onChange'-Ereignis wird ja erst ausgelöst, wenn man das Feld wieder verlassen hat. Um also zu ermitteln, ob ein Zeichen getippt wurde (...und nach zwei oder vier Zeichen wird die Funktion 'Punkt()' aufgerufen...) mußt Du die Tastatur abfragen. Ob das auch geht, währen man in ein Feld schreibt, weiß ich gar nicht.

        Außerdem: Ich finde solche automatischen Ergänzungen a la Micro$oft ziemlich lästig - lass es lieber. Ich glaube, Deine erste Lösung (drei Felder) war am besten. Da mußt Du auch am wenigsten Fehlerkontrolle machen.

        Gruß, Andreas

        1. ...SagDat(par1, par2, par3) aufrufen.
          Davon hab ich schon mal was gehört, hat jemand mal einen Tip, wo ich das finde bzw. wie das gemacht wird?
          ja, SelfHTML lesen

          Danke :-)

          Hab nie gesagt, dass ich alles selbst geschrieben habe.
          muss man ja auch nicht, aber wenn man den 'Leihcode' nicht durchschaut ist das mit dem Helfen etwas schwierig, würde nämlich im Ernstfall darauf hinauslaufen, daß jemand Dir den Kram komplett schreibt.

          Och ich hätte da kein Problem damit. .-)

          Da fällt mir noch was ein, kann ich eine Funktion über das Feld legen, so dass ich beim Eintippen die Punkte nicht mehr setzten muss???
          schein mir schwierig - ein 'onChange'-Ereignis wird ja erst ausgelöst, wenn man das Feld wieder verlassen hat. Um also zu ermitteln, ob ein Zeichen getippt wurde (...und nach zwei oder vier Zeichen wird die Funktion 'Punkt()' aufgerufen...) mußt Du die Tastatur abfragen. Ob das auch geht, währen man in ein Feld schreibt, weiß ich gar nicht.

          das fällt ja dann weg, wenn ich drei Felder nehme

          Außerdem: Ich finde solche automatischen Ergänzungen a la Micro$oft ziemlich lästig - lass es lieber.

          das dumme ist nur, dass die das hier gerne haben wollen, weil das mit dem punkt schreiben, bei 5000 und mehr datensätzen etwas lästig ist.

          Ich glaube, Deine erste Lösung (drei Felder) war am besten. Da mußt Du auch am wenigsten Fehlerkontrolle machen.

          mhm glaube ich auch

          Danke
          Ann

          1. Hallo,

            das dumme ist nur, dass die das hier gerne haben wollen, weil das mit dem punkt schreiben, bei 5000 und mehr datensätzen etwas lästig ist.

            Ich glaube, Deine erste Lösung (drei Felder) war am besten. Da mußt Du auch am wenigsten Fehlerkontrolle machen.
            mhm glaube ich auch

            <html>
            <head>
            <title></title>
            </head>
            <body >
            <form name="myform">
            <input type="Text" name="tag" value="" size="2" maxlength="2" onkeyup="if(this.value.length==2) this.form.monat.focus();">.
            <input type="Text" name="monat" value="" size="2" maxlength="2" onkeyup="if(this.value.length==2) this.form.jahr.focus();">.
            <input type="Text" name="jahr" value="" size="4" maxlength="4" onkeyup="if(this.value.length==4) alert('fertig');">
            </form>
            </body>
            </html>

            Eine Datumseingabe mit automatischer Weiterschaltung. Bitteschön!

            Gruß

            Axel

            1. Hallo,

              <html>
              <head>
              <title></title>
              </head>
              <body >
              <form name="myform">
              <input type="Text" name="tag" value="" size="2" maxlength="2" onkeyup="if(this.value.length==2) this.form.monat.focus();">.
              <input type="Text" name="monat" value="" size="2" maxlength="2" onkeyup="if(this.value.length==2) this.form.jahr.focus();">.
              <input type="Text" name="jahr" value="" size="4" maxlength="4" onkeyup="if(this.value.length==4) alert('fertig');">
              </form>
              </body>
              </html>

              Eine Datumseingabe mit automatischer Weiterschaltung. Bitteschön!

              Ja weiß jetzt gar nicht, was ich sagen soll.
              Aber am besten :Danke!
              Was?

              Gruss,
              Ann

            2. Hallo,

              hab da aber jetzt ein kleines Problem.

              Wennich dies anwende, dann führt er meine funktion unter onBlur nicht mehr aus und die benötige ich, um zu überrüfen, ob das datum gültig ist.

              Hast da jemand noch einen tip für mich?

              thx
              Ann

            3. Und noch was....

              kann ich die Daten aus allen drei Feldern in ein Feld in der Datenbank speichern??????

              Danke.
              Ann

              1. Hallo Ann,

                <html>
                <head>
                <title></title>
                <script type="text/javascript">
                <!--
                function weiter(TMJ) {
                   if (TMJ == "T") {
                      if (document.myform.tag.value.length == 2) {
                         document.myform.monat.focus();
                      }
                   } else if (TMJ == "M") {
                      if (document.myform.monat.value.length == 2) {
                         document.myform.jahr.focus();
                      }
                   } else if (TMJ == "J") {
                      if (document.myform.jahr.value.length == 4) {
                         dattest();
                      }
                   }
                }

                function dattest() {
                   var T = parseInt(document.myform.tag.value,10);
                   var M = parseInt(document.myform.monat.value,10);
                   var J = parseInt(document.myform.jahr.value,10);
                   if (T > 1 && T < 32 && M > 1 && M < 13 && J > 1900 && J < 2100) {
                      var datum = J + "/" + M + "/" + T;
                      alert ("Datum für Datenbank: " + datum);
                   } else {
                      alert("falsche Datumseingabe");
                      document.myform.tag.value="";
                      document.myform.monat.value="";
                      document.myform.jahr.value="";
                      document.myform.tag.focus();
                   }
                }
                //-->
                </script>
                <noscript></noscript>
                </head>
                <body >
                <form name="myform">
                <input type="Text" name="tag" value="" size="2" maxlength="2" onkeyup="weiter('T');">.
                <input type="Text" name="monat" value="" size="2" maxlength="2" onkeyup="weiter('M');">.
                <input type="Text" name="jahr" value="" size="4" maxlength="4" onkeyup="weiter('J');">
                </form>
                </body>
                </html>

                Hinweise:
                Wenn Du mit einer Datenbank arbeitest, hast Du doch sicherlich eine serverseitige Scriptsprache (PHP, Perl, ASP) zur Verfügung. Dann sollte die Datums-Prüfung dort erfolgen. JavaScript ist dafür zu unsicher. Der Nutzer könnte es abgeschaltet haben.

                Das Datum für die Datenbank muss dann auch dort aus T, M und J zu einem String zusammengebaut werden.

                Gruß

                Axel