Gary: Inputinhalt in Variable stecken

Abend zusammen

Ich habe diesen Code mal erdacht:
----------------------------------
var Geburt;
var Stelle1 = Geburt.substr(0, 1);
var Stelle2 = Geburt.substr(1, 1);
var Stelle3 = Geburt.substr(2, 1);
var Stelle4 = Geburt.substr(3, 1);
var Stelle5 = Geburt.substr(4, 1);
var Stelle6 = Geburt.substr(5, 1);
var Stelle7 = Geburt.substr(6, 1);
var Stelle8 = Geburt.substr(7, 1);
var Stelle9 = Geburt.substr(8, 1);
var Stelle10 = Geburt.substr(9, 1);
----------------------------------

Und nun suche ich eine Möglichkeit, die Variable "var Geburt" mit der gemachten Eingabe in diesem Imputfeld nach "submit" zu füllen:
--------------------------------------------------------------------
<p id="Zelle05">Geb.Datum: <input type="text" name="geboren" size="10" maxlength="10"></p>
--------------------------------------------------------------------

Die so extrahierten Variabeln sollen dann in dieser Funktion zum Einsatz kommen:
--------------------------------------------------------------------
if (Stelle1 ==< 3 and Stelle2 ==< 9 and Stelle3 == "." and Stelle4 ==< 1 and Stelle5 ==< 2 and Stelle6 == "." and Stelle7 ==< 3 and Stelle8 ==< 9 and Stelle9 == 9 and Stelle10 ==< 9) {}
--------------------------------------------------------------------

Bei der Variabelfüllung "Geburt" muß ich mich wahrscheinlich auf den Inputnamen beziehen ("geboren")...

Für einen kleinen Hinweis wäre ich dankbar.

Gruß

Gary

PS:Das Selfbeispiel habe ich gesehen. Ist aber viel zu kompliziert mit dem "Parse" und "neues Objekt". Außerdem geht das nicht bei allen Browsern. Für meine Zwecke würde eine einfache IF-Überprüfung nach obrigem Beispiel völlig reichen.

  1. Hi,

    Ich habe diesen Code mal erdacht:

    [Pferde, größere Köpfe, ...]

    var Geburt;
    var Stelle1 = Geburt.substr(0, 1);
    var Stelle2 = Geburt.substr(1, 1);
    var Stelle3 = Geburt.substr(2, 1);

    ...

    http://de.selfhtml.org/javascript/objekte/string.htm#char_at

    Und nun suche ich eine Möglichkeit, die Variable "var Geburt" mit der gemachten Eingabe in diesem Imputfeld nach "submit" zu füllen

    Du willst also schlicht und einfach nur den Inhalt eines Inputfeldes auslesen?
    http://de.selfhtml.org/javascript/objekte/elements.htm#value

    Wenn du dir für dich selber mal die Mühe machen würdest, dein Problem/Aufgabestellung etwas *sinnvoller* zu formulieren, dann könntest du auch schneller selber zur Lösung kommen, weil du dann eine Idee haben kannst/solltest, worunter du nachschauen kannst.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi ChrisB

      Du willst also schlicht und einfach nur den Inhalt eines Inputfeldes auslesen?
      http://de.selfhtml.org/javascript/objekte/elements.htm#value

      Das mit dem (Input) "value" ist Käse! Value ist eine Vorbelegung für das Inputfeld, welches nicht existiert, da ja der Nutzer die Eingabe erst noch tätigen muss. Und falls du das Value bei submit meinst:

      <p><input type="submit" name="command" value="Ausführen!"></p>

      Das ist auch Käse, weil dort ja alle Werte aller Felder abgeschickt werden.

      Oh dieses JavaScript! Ich kann es einfach nicht leiden - leider braucht man es für gewisse Dinge einfach!

      Nicht persönlich nehmen - Ich schimpfe mit JS - nicht mit dir *ehrlich!*

      Gruß

      Gary

      1. Mahlzeit Gary,

        Das mit dem (Input) "value" ist Käse!

        Nein - wie kommst Du darauf?

        Value ist eine Vorbelegung für das Inputfeld, welches nicht existiert, da ja der Nutzer die Eingabe erst noch tätigen muss.

        Wenn Du den von ChrisB verlinkten Teil von SELFHTML gelesen und verstanden hättest, würdest Du derart Sinnfreies nicht behaupten.

        Also: setzen, sechs, zurück auf Anfang und nochmal lesen - und zwar solange, bis Du den einleitenden ersten Absatz verstanden hast.

        Oh dieses JavaScript! Ich kann es einfach nicht leiden - leider braucht man es für gewisse Dinge einfach!

        Keine Arme - keine Kekse.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. Hallo,

        Du willst also schlicht und einfach nur den Inhalt eines Inputfeldes auslesen?
        http://de.selfhtml.org/javascript/objekte/elements.htm#value
        Das mit dem (Input) "value" ist Käse! Value ist eine Vorbelegung für das Inputfeld

        nein, die Value-Eigenschaft gibt den aktuellen Inhalt des input-Elements wieder! Und zwar quasi in Echtzeit. Die Vorbelegung, die mit dem gleichnamigen HTML-Attribut gesetzt wurde, kann man über defaultValue abfragen (zum Beispiel, um value wieder auf defaultValue zu setzen).

        Oh dieses JavaScript! Ich kann es einfach nicht leiden - leider braucht man es für gewisse Dinge einfach!

        Vielleicht solltest du uns erstmal erklären, was du eigentlich erreichen willst. Das kann ich nämlich aus deinem Startposting beim besten Willen nicht entnehmen.

        Nicht persönlich nehmen - Ich schimpfe mit JS - nicht mit dir *ehrlich!*

        Man kann ja viel über Javascript schimpfen, das tu ich auch. Aber bitte erst, wenn man die Systematik des Teils, über den man schimpft, mal verstanden hat.

        So long,
         Martin

        --
        Wenn man keine Ahnung hat - einfach mal Fresse halten.
          (Dieter Nuhr, deutscher Kabarettist)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hallo Martin

          Vielleicht solltest du uns erstmal erklären, was du eigentlich erreichen willst. Das kann ich nämlich aus deinem Startposting beim besten Willen nicht entnehmen.

          Erstes Radiobutton - Ausführen klicken - ergibt diese Eingabemaske.

          Dort will ich, wenn der "Speichern!"-Knopf gedrückt wird, überprüfen ob das Datum in dem Format TT.MM.YYYY vorliegt. Dazu möchte ich den String bei Geb.Datum Zeichenweise auflösen:
          ----------------------------------------------------------
          var Geburt; <-- Da soll der Inputwert von Geb.Datum rein
          var Stelle1 = Geburt.substr(0, 1);
          var Stelle2 = Geburt.substr(1, 1);
          var Stelle3 = Geburt.substr(2, 1);
          var Stelle4 = Geburt.substr(3, 1);
          var Stelle5 = Geburt.substr(4, 1);
          var Stelle6 = Geburt.substr(5, 1);
          var Stelle7 = Geburt.substr(6, 1);
          var Stelle8 = Geburt.substr(7, 1);
          var Stelle9 = Geburt.substr(8, 1);
          var Stelle10 = Geburt.substr(9, 1);
          ----------------------------------------------------------

          Datum:  0   3   .   0   9   .   2   0   1   0
                  |   |   |   |   |   |   |   |   |   |
          Stelle: 1,  2,  3,  4,  5,  6,  7,  8,  9,  10

          Dann soll per if-Anweisung Zeichen für Zeichen verglichen werden:
          ----------------------------------------------------------
          if (Stelle1 ==< 3 and Stelle2 ==< 9 and Stelle3 == "." and Stelle4 ==< 1 and Stelle5 ==< 2 and Stelle6 == "." and Stelle7 ==< 3 and Stelle8 ==< 9 and Stelle9 ==< 9 and Stelle10 ==< 9) {}
          ----------------------------------------------------------

          Das erste Zeichen (Stelle1) kann den Wert 3 oder kleiner annehmen...
          usw...
          Das dritte Zeichen (Stelle3) kann nur ein "." sein...

          Wenn also am ende des großen IF-Blocks alle Zeichen in den gültigen Parametern liegen, dann erst darf das Formular übertragen werden.

          Für Tag wäre nach dem Modell oben Werte zwischen 00 und 39 möglich.
          Für Monat wäre nach dem Modell oben Werte zwischen 00 und 12 möglich.
          Für Jahr wäre nach dem Modell oben Werte zwischen 0000 und 3999 möglich.

          Nicht perfekt, aber akzeptabel. Das Selfbeispiel hier geht wahrscheinlich nicht, weil es führende Nullen entfernt. Ich brauch aber in der DB den Wert z. B. 01.08.2010. Also mit Null!

          Ich will ja nicht alles in der Maske kontrollieren. Nur das Datum, um Programmabbrüche aufgrund von falschen Daumsangaben zu vermeiden. Und ein paar ausgewählte Felder auch "Leere" also "". Aber die Datumsgeschichte ist wohl die härteste Nuss zum Knacken...

          Gruß Gary

          1. Hallo Gary,

            Dort will ich, wenn der "Speichern!"-Knopf gedrückt wird, überprüfen ob das Datum in dem Format TT.MM.YYYY vorliegt

            also möchtest du den eingegebenen String an den Punkten aufsplitten, und dann kontrollieren, ob das erste Element im Intervall [1..31], das zweite im Intervall [1..12] liegt.
            Anstatt die Wertebereiche selbst zu überprüfen, kannst du auch gleich ein Date-Objekt konstruieren.

            if (Stelle1 ==< 3 and Stelle2 ==< 9 and Stelle3 == "." and Stelle4 ==< 1 and Stelle5 ==< 2 and Stelle6 == "." and Stelle7 ==< 3 and Stelle8 ==< 9 and Stelle9 ==< 9 and Stelle10 ==< 9)

            Was erfindest du da für lustige Operatoren?

            Nicht perfekt, aber akzeptabel. Das Selfbeispiel hier geht wahrscheinlich nicht, weil es führende Nullen entfernt. Ich brauch aber in der DB den Wert z. B. 01.08.2010. Also mit Null!

            Die Aufbereitung machst du sinnvollerweise beim Eintragen. Es ist unpraktisch, die Werte während der gesamten Verarbeitung als Strings mitzuschleppen, damit so ein Gimmick wie führende Nullen erhalten bleibt.

            So long,
             Martin

            --
            Funktion und Referenz auf diese sind mir bekannt, mit Zeigern kann ich nicht viel mehr anfangen, als damit auf Buttons zu klicken.
              (Ashura)
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          2. Mahlzeit Gary,

            Vielleicht solltest du uns erstmal erklären, was du eigentlich erreichen willst.

            Dort will ich, wenn der "Speichern!"-Knopf gedrückt wird, überprüfen ob das Datum in dem Format TT.MM.YYYY vorliegt.

            Dann mach es so, wie Der Martin vorschlägt: <http://de.selfhtml.org/javascript/objekte/string.htm#split@title=trenne den String> im erhofften Format "DD.MM.YYYY" anhand der Punkte auf und erzeuge aus den drei Elementen des sich daraus ergebenden Arrays <http://de.selfhtml.org/javascript/objekte/date.htm#allgemeines@title=ein neues Date-Objekt>.

            Wenn das nicht klappt, war die Eingabe fehlerhaft - sinnvollerweise überprüfst Du das zwischendurch.

            All Deine sonstigen Gedankengänge sind überflüssig und kontraproduktiv.

            Nicht perfekt, aber akzeptabel. Das Selfbeispiel hier geht wahrscheinlich nicht, weil es führende Nullen entfernt. Ich brauch aber in der DB den Wert z. B. 01.08.2010. Also mit Null!

            Falsch. Der Datenbank ist es sowas von egal, ob führende Nullen vorhanden sind oder nicht - wenn Du für die jeweilige(n) Spalte(n) ein geeignetes Datumsformat gewählt hast.

            Relevant wären führende Nullen allerhöchstens bei der *Ausgabe* der Daten.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Hi EKKi

              Nicht perfekt, aber akzeptabel. Das Selfbeispiel hier geht wahrscheinlich nicht, weil es führende Nullen entfernt. Ich brauch aber in der DB den Wert z. B. 01.08.2010. Also mit Null!

              Falsch. Der Datenbank ist es sowas von egal, ob führende Nullen vorhanden sind oder nicht - wenn Du für die jeweilige(n) Spalte(n) ein geeignetes Datumsformat gewählt hast.

              Meiner DB nicht - dort liegt alles in Strings vor (.csv- separiert), so das auch ein Mensch aus Fleisch und Blut zur Not im Fall der Fälle was erkennen kann. Alle Daten sind so dort drin, daß man sie auch direkt ausgeben kann. Ähnlich dem WYSIWYG-Prinzip halte ich es auch mit gespeicherten Daten.

              Ein ordentliches _deutsches_ Datum hat so >> tt.mm.jjjj << auszusehen -mit Null! (klingt jetzt hoffentlich nicht zu "rechts" ?) *gröl*

              Relevant wären führende Nullen allerhöchstens bei der *Ausgabe* der Daten.

              Alle Bearbeitungsroutinen erwarten den Datumswert bereits in tt.mm.jjjj - eine entsprechende Nullbehandlung ist dort schon inklusive.

              Viele Grüße Gary

              1. Hallo,

                Meiner DB nicht - dort liegt alles in Strings vor (.csv- separiert)

                ja, das hatte ich schon herausgehört.

                Ein ordentliches _deutsches_ Datum hat so >> tt.mm.jjjj << auszusehen -mit Null!

                Dann wende dieses Format an, wenn du ein Datum *ausgibst*. Zum Verarbeiten ist das aber extrem ungünstig, da würde ich dir eher empfehlen, intern (und auch in deiner textbasierten DB) das ISO-Format YYYY-MM-DD zu verwenden. Das ist auch noch gut lesbar (ich verwende es auch im Alltag gern), dafür aber auch systematisch sortierbar.
                Alternativ speichere Tag, Monat und Jahr als getrennte Werte - das ist zwar vom Datenmodell her Unsinn, aber wesentlich leichter in das gewünschte Ausgabeformat zu konvertieren. Wenn man schon suboptimale Methoden verwendet, muss man Kompromisse machen.

                Relevant wären führende Nullen allerhöchstens bei der *Ausgabe* der Daten.
                Alle Bearbeitungsroutinen erwarten den Datumswert bereits in tt.mm.jjjj - eine entsprechende Nullbehandlung ist dort schon inklusive.

                Dann machst du dir erheblich mehr Arbeit als nötig.

                So long,
                 Martin

                --
                Gott hilft niemandem, er erfreut sich nur an unseren Leiden.
                  (Ashura)
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Morgen Martin & EKKI

                  Dann machst du dir erheblich mehr Arbeit als nötig.

                  Das mag sein, aber ich muss mit den Mittel arbeiten, die ich verstehe bzw. kenne. Ich will, wenn es geht, keinen Code verwenden, den ich noch nicht verstehe - da bin ich etwas eigen.

                  Schau mal hier z. B. in den Quelltext:

                  http://www.wc-report.info/test/kdb-entrance.html

                  Warum geht jetzt plötzlich die Datumsformatabfrage im Verbund mit anderen Abfragen nicht mehr? Genau der gleiche Code!

                  Das ist typisch JavaScript!

                  Grüße an Alle (außer an JS)

                  Gary

                  1. Das ist typisch JavaScript!

                    Wenn etwas nicht "geht", dann hast nicht selten du einen Fehler gemacht. Du weißt wo du die Fehlermeldungen findest? (ich hoffe du wirst sie nicht so lange ignorieren, wie du es bei Perl gemacht hast)

                    Struppi.

                    1. Hi Struppi

                      Wenn etwas nicht "geht", dann hast nicht selten du einen Fehler gemacht. Du weißt wo du die Fehlermeldungen findest?

                      Im Serverlog steht nichts. Dern Browser meckert auch nicht. Die Geb.Datum-Überprüfung geht einfach "stillschweigend" nicht.

                      Sowei - so schlecht :-(

                      Gruß gary

                      1. Mahlzeit Gary,

                        Wenn etwas nicht "geht", dann hast nicht selten du einen Fehler gemacht. Du weißt wo du die Fehlermeldungen findest?

                        Im Serverlog steht nichts.

                        Was sollte da auch stehen? Verständnis ist hilfreicher als blinder Aktionismus ...

                        Ein kleines Quiz - extra für Dich:

                        1.) Javascript wird wo ausgeführt?

                        [ ] auf dem Server     [ ] im Browser

                        2.) Wo sind also vermutlich Fehlermeldungen zu finden?

                        [ ] auf dem Server     [ ] im Browser

                        Dern Browser meckert auch nicht. Die Geb.Datum-Überprüfung geht einfach "stillschweigend" nicht.

                        *Welcher* Browser? Dass sich nicht alle gleich verhalten, solltest Du eigentlich bereits mitbekommen haben.

                        AFAIK hat jeder moderne Browser eine Art "Fehlerkonsole" (beim Firefox z.B. unter E[x]tras - Fe[h]lerkonsole), in der Fehlermeldungen aufgelistet werden ... u.a. auch die des Javascript-Interpreters.

                        MfG,
                        EKKi

                        --
                        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                        1. Mahhlzeit EKKI

                          Ein kleines Quiz - extra für Dich:

                          1.) Javascript wird wo ausgeführt?

                          [ ] auf dem Server     [X] im Browser

                          2.) Wo sind also vermutlich Fehlermeldungen zu finden?

                          [ ] auf dem Server     [X] im Browser

                          AFAIK hat jeder moderne Browser eine Art "Fehlerkonsole" (beim Firefox z.B. unter E[x]tras - Fe[h]lerkonsole), in der Fehlermeldungen aufgelistet werden ... u.a. auch die des Javascript-Interpreters.

                          Fehlermeldung wenn ich die Zeilen in den Code-evaluierer einfüge und auf evaluieren drücker:

                          "return not in funktion"

                          Das hilft mit jetzt wie?

                          Gruß Gary

                          1. Fehlermeldung wenn ich die Zeilen in den Code-evaluierer einfüge und auf evaluieren drücker:

                            Was ist das denn? Ich sprach von der Fehlerkonsole

                            Das hilft mit jetzt wie?

                            das war genau meine Befürchtung, dass du dich in Punkto Fehlersuche genau so Stur anstellst wie damals bei Perl.

                            wie auch immer, ich hab dir gesagt was du Wissen musst, anwenden könne musst du es selber.

                            Struppi.

                          2. Mahlzeit Gary,

                            "Fehlerkonsole" (beim Firefox z.B. unter E[x]tras - Fe[h]lerkonsole),

                            Fehlermeldung wenn ich die Zeilen in den Code-evaluierer einfüge und auf evaluieren drücker:

                            Merkst Du etwas?

                            Wie soll man Dir helfen, wenn Du die Dir gegebenen Hinweise nicht ernstnimmst, nicht anwendest, Dich nicht darüber informierst, sie Dir nicht anschaust usw. ... stattdessen aber ständig vollkommen andere Baustellen aufreißt und jetzt wieder mit der nächsten mangelhaft beschriebenen Problematik um die Ecke kommst.

                            Kurz gesagt: wie soll ich (als potentieller Helfer) wissen, was Du da jetzt schon wieder getan hast? Du schreibst nicht, welchen Browser Du benutzt, Du beschreibst nicht, *was genau* Du getan hast, sondern wirfst mit irgendwelchen vermutlich selbst konstruierten Bezeichnern um Dich und nennst nur irgendeine vermutlich unvollständige denglische "Fehlermeldung".

                            Fazit: Du willst eigentlich gar nicht, dass man Dir hilft.

                            MfG,
                            EKKi

                            --
                            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                            1. Hi EKKi

                              Firefox 3.0.17
                              Menüleiste/Extras/Fehlerkonsole

                              Zuerst stand dort gar nichts drin. Desshalb habe ich den betrefenden Code in die Codezeile der Fehlerkonsole kopiert und dort in der Fehlerkonsole den Knopf Evaluieren gedrückt. Dort erhielt ich die Fehlermeldung: return not in function.

                              Jetzt habe ich die Web-Seite aufgerufen und unmittelbar nach dem Aufruf die Fehlerkonsole aufgemacht. Dort habe ich jetzt eine ganze Liste von Fehlern drin (was vorher nicht der Fall war):

                              checkAll is not def <- Darum muss ich mich kümmern

                              missing ) after condition <- Seh ich nirgens, muß ich noch abklären

                              return not in function <- hatte ich schon berichtet

                              Ich such jetzt erstmal ob ich was über definition von Funktionen finde...
                              Wenn ich möglichst viele Fehler finde und verbesser komm ich vielleicht drauf was da schon wieder los ist...

                              Gruß und Bye

                              Gary

                              1. Hi,

                                Jetzt habe ich die Web-Seite aufgerufen und unmittelbar nach dem Aufruf die Fehlerkonsole aufgemacht. Dort habe ich jetzt eine ganze Liste von Fehlern drin (was vorher nicht der Fall war):

                                Die können „alt“ sein.

                                Öffne die Fehlerkonsole, drücke dann auf “clear” (oder „löschen“ oder wie auch immer der Button auf Deutsch heißen mag), um alle alten Meldungen weg zu bekommen.
                                Anschließend lade dann deine Seite - und schau wieder in die Konsole. Und nach dem betätigen irgendwelcher Knöpfe, die JavaScript aufrufen, dann auch wieder.

                                (Deshalb bevorzuge ich Firebug, weil man in dessen Konsole das Problem, dass da noch alter Murks, ggf. von ganz anderen Seiten, drin steht, gar nicht hat.)

                                MfG ChrisB

                                --
                                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
                              2. Wenn ich möglichst viele Fehler finde und verbesser komm ich vielleicht drauf was da schon wieder los ist...

                                Genau, aber dazu müßt du dir die Mühe machen, wenigstens die Werkzeuge vernünftig zu bedienen, bevor du irgendwelche pauschalen Vermutungen aufstellst, die dir nicht helfen.

                                Struppi.

                              3. Mahlzeit Gary,

                                Firefox 3.0.17

                                Dass der veraltet ist, weißt Du?

                                Jetzt habe ich die Web-Seite aufgerufen und unmittelbar nach dem Aufruf die Fehlerkonsole aufgemacht. Dort habe ich jetzt eine ganze Liste von Fehlern drin (was vorher nicht der Fall war):

                                Hilfreich ist, wenn Du die Fehlerkonsole komplett löschst und anschließend die problematische Seite laden lässt: dann stehen dort nur Fehlermeldungen der aktuellen Seite drin.

                                checkAll is not def <- Darum muss ich mich kümmern

                                missing ) after condition <- Seh ich nirgens, muß ich noch abklären

                                return not in function <- hatte ich schon berichtet

                                Vermutlich hängen diese Fehler alle miteinander zusammen - zumindest der erste ist ein Folgefehler: wenn in der Definition der Funktion "checkAll" Syntaxfehler vorhanden sind, ist die Defition ungültig und der Browser kann diese Funktion natürlich nicht aufrufen.

                                Normalerweise wird auch die Zeilennummer angezeigt, in der der Fehler aufgetreten ist (bzw. Du kannst per Klick auf die Fehlermeldung genau zu der problematischen Zeile gelangen).

                                Ich such jetzt erstmal ob ich was über definition von Funktionen finde...

                                <http://de.selfhtml.org/javascript/sprache/funktionen.htm#definieren@title=Die Grundlagen> sind Dir doch offenbar bereits bekannt ...?

                                MfG,
                                EKKi

                                --
                                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                                1. Hi EKKI

                                  Dass der veraltet ist, weißt Du?

                                  Ja, ist aber nicht schlimm...

                                  Hilfreich ist, wenn Du die Fehlerkonsole komplett löschst und anschließend die problematische Seite laden lässt: dann stehen dort nur Fehlermeldungen der aktuellen Seite drin.

                                  Habe ich gemacht - keine Fehler in der Fehlerkonsole!

                                  Es geht alles bis auf das Absenden des Formulares bei "Richtiger" Datumseingabe.

                                  Es kann nur der If-Syntax sein:

                                  if(document.form1.geboren.value == "") {
                                                                         alert("Bitte Geb.Datum eingeben!");
                                                                         return false;
                                                                         }
                                  if(!document.form1.geboren.value.match(/^(\d\d).(\d\d).(\d\d\d\d)/))  {
                                                                                                          alert("Bitte Geb.Datum nur im Format tt.mm.jjjj eingeben!");
                                                                                                          return false;
                                                                                                          }

                                  Ich vermute das nach dem Prüfen auf Leere "" der Valuewert von "geboren" leergesaugt wird, so daß er in der zweiten Prüfung Value.match nicht mehr vorhanden ist. Dies habe ich soeben überprüft, indem ich alle anderen Feldprüfungen entfernt habe. Ergebnis: Datumsformatprüfung läuft einwandfrei. Also ist mit sehr hoher Wahrscheinlichkeit ein doppeltes Auslesen eines Valuewertes nicht möglich!

                                  Also lautet die neue Aufgabe: Wie dupliziere ich ein Value"geboren" in z. B. eine Andere Variable?

                                  Ich muss noch schnell ein paar Besorgungen machen...

                                  Bis Später

                                  Gary

                                  1. Hi,

                                    Es kann nur der If-Syntax sein:

                                    *die* Syntax.
                                    By the way, warum sind da eigentlich Myriaden von Leerzeichen in deinem Quellcode? Hier wird zwar immer wieder empfohlen, den Code einzurücken - aber doch nicht bis zum rechten Bildschirmrand, sondern so, dass man die logischen Blöcke erkennt.

                                    if (document.form1.geboren.value == "") {
                                       alert("Bitte Geb.Datum eingeben!");
                                       return false;
                                    }
                                    if (!document.form1.geboren.value.match(/^(\d\d).(\d\d).(\d\d\d\d)/)) {
                                       alert("Bitte Geb.Datum nur im Format tt.mm.jjjj eingeben!");
                                       return false;
                                    }

                                    Ich vermute das nach dem Prüfen auf Leere "" der Valuewert von "geboren" leergesaugt wird

                                    Nein, sowas ist Unsinn. Der Vergleich in der ersten if-Anweisung ist ein rein lesender Zugriff.

                                    Also ist mit sehr hoher Wahrscheinlichkeit ein doppeltes Auslesen eines Valuewertes nicht möglich!

                                    Falsche Schlussfolgerung. Die richtige wäre gewesen: Also ist in dem Teil, den du probehalber gelöscht hast, ein Fehler. Vermutlich ein Syntaxfehler - die Meldungen, die du bisher verraten hast, deuten auf unpaarige Klammern hin. Vermutlich eine öffnende geschweifte Klammer vergessen (das passiert leicht, wenn man sie am Zeilenende anstatt am Zeilenanfang notiert), so dass die nächste schließende Klammer die Funktion beendet und ein später folgendes return dann -wie beanstandet- außerhalb der Funktion steht.

                                    Ciao,
                                     Martin

                                    --
                                    Das Leben ist lebensgefährlich und endet meistens tödlich.
                                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                    1. Tag Martin

                                      Es kann nur der If-Syntax sein:

                                      *die* Syntax.

                                      Kein Wunder zickt das rum - jetzt ist der Mist auch noch weiblich!!!

                                      Ich vermute das nach dem Prüfen auf Leere "" der Valuewert von "geboren" leergesaugt wird

                                      Nein, sowas ist Unsinn. Der Vergleich in der ersten if-Anweisung ist ein rein lesender Zugriff.

                                      Das mag sein... ob das der Vergleich auch weis, daß er nur lesen darf? *g*

                                      Falsche Schlussfolgerung. Die richtige wäre gewesen: Also ist in dem Teil, den du probehalber gelöscht hast, ein Fehler. Vermutlich ein Syntaxfehler - [... unpaarige Klammern]...

                                      Sieh hin... alles in Ordnung. Die Klammern sind alle da wo sie hingehören...
                                      Ich kann auch keinen Syntaxfehler finden. Habe schon alle möglichen Abwandlungen der Schreibweise ausprobiert. Schöner kann man den Code bald nicht mehr hinschreiben - sonst wär er geschminkt!

                                      Fakt ist, daß dies hier allein funktioniert:
                                      if(!document.form1.geboren.value.match(/^(\d\d).(\d\d).(\d\d\d\d)/))  {
                                                                                                              alert("Bitte Geb.Datum nur im Format tt.mm.jjjj eingeben!");
                                                                                                              return false;
                                                                                                              }
                                      und der Andere If-Code alleine ebenfalls funktioniert. Also muß es ein Problem sein, das nur kombiniert auftritt. Wie sicher ist das mit dem lesenden Zugriff auf value"geboren"?

                                      Gruß Gary

                                      PS.:

                                      Also ist mit sehr hoher Wahrscheinlichkeit ein doppeltes Auslesen eines Valuewertes nicht möglich!

                                      Ich probier die Variabelgeschichte aus - fertig... Jetzt will ich es wissen...

                                      1. Hi Martin

                                        Ich probier die Variabelgeschichte aus - fertig... Jetzt will ich es wissen...

                                        Selbst wenn Value nur einmal auslesbar wäre, würde ich mit dieser Konstruktion den Wert in beständige Variablen haben. Aber es geht trotzdem nicht :-(
                                        -------------------------------------------------
                                        var twinone = document.form1.geboren.value;
                                        var twintwo = twinone;

                                        if(twinone == "") {
                                        alert("Bitte Geb.Datum eingeben!");              <-- Das geht!
                                        return false;
                                        }

                                        if(!twintwo.match(/^(\d\d).(\d\d).(\d\d\d\d)/))  {
                                        alert("Bitte Geb.Datum nur im Format tt.mm.jjjj eingeben!"); <-- Hier steigt er aus!
                                        return false;
                                        }
                                        -------------------------------------------------

                                        Gruß Gary

                                        1. Hallo,

                                          Selbst wenn Value nur einmal auslesbar wäre, würde ich mit dieser Konstruktion den Wert in beständige Variablen haben. Aber es geht trotzdem nicht :-(

                                          wie ich schon sagte: Falsche Schlussfolgerungen.

                                          if(!twintwo.match(/^(\d\d).(\d\d).(\d\d\d\d)/))  {
                                          alert("Bitte Geb.Datum nur im Format tt.mm.jjjj eingeben!"); <-- Hier steigt er aus!
                                          return false;
                                          }

                                          Das läuft einwandfrei durch, passende Datumseingabe vorausgesetzt.
                                          Aber die Überprüfungen der restlichen Felder geben alle denselben Text aus. Schon mal darüber nachgedacht?

                                          Ciao,
                                           Martin

                                          --
                                          Irgendwann in grauer Vorzeit benutzte einer unserer prähistorischen Vorfahren ein Schimpfwort anstelle der Keule.
                                          Die Zivilisation hatte begonnen.
                                          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                          1. Sehr geehrter Herr Martin :-)

                                            Aber die Überprüfungen der restlichen Felder geben alle denselben Text aus. Schon mal darüber nachgedacht?

                                            Das darf doch wohl nicht wahr sein! Soll es nun tatsächlich an einer total unwichtigen, vom Coder auch noch völlig freien Textgestaltung gelegen haben?

                                            Man kann doch in diese Alert-Boxen reinschreiben was man will - sollte man meinen!

                                            Was mache ich, wenn ich zwei Unterschiedliche Fehler hätte, die aber mit dem identischen Text ausgeben will? - Richtig - in die Röhre gucken...

                                            Siehst du, das ist genau das, warum JS bescheuert ist. Da hätte man doch nie und nimmer - wirklich nie - daran gedacht, das dies Einfluß auf die Scriptverarbeitung haben könnte... *tztztz*

                                            Ne - ich glaub es immer noch nicht...

                                            Kurz und bündig - jetzt tut es so wie es sollte...

                                            Gruß Gary

                                            PS.: Bevor ich jetzt alle relevanten Masken in der DB mit JS-Code ausstatte gibts jetzt ne Zigi --- manman -den halben Tag an so nem Mist vertrödelt!

                                            1. Hallo,

                                              Aber die Überprüfungen der restlichen Felder geben alle denselben Text aus. Schon mal darüber nachgedacht?
                                              Das darf doch wohl nicht wahr sein! Soll es nun tatsächlich an einer total unwichtigen, vom Coder auch noch völlig freien Textgestaltung gelegen haben?

                                              nein, du hast es immer noch nicht erfasst.

                                              Man kann doch in diese Alert-Boxen reinschreiben was man will

                                              Ja.

                                              Was mache ich, wenn ich zwei Unterschiedliche Fehler hätte, die aber mit dem identischen Text ausgeben will?

                                              Identischen Text ausgeben.

                                              Siehst du, das ist genau das, warum JS bescheuert ist. Da hätte man doch nie und nimmer - wirklich nie - daran gedacht, das dies Einfluß auf die Scriptverarbeitung haben könnte... *tztztz*

                                              Hat es nicht. Du hast in vier oder fünf Abfragen denselben Wortlaut für den Fehlerfall, und wenn diese Meldung ausgegeben wird, nimmst du einfach an, sie käme vom ersten Abfragezweig. Dass es aber vielleicht der dritte oder vierte war, der die Meldung ausgibt, hast du nicht bedacht.

                                              Anders gesagt: Wenn mehrere Fehler dieselbe Meldung erzeugen, solltest du zuerst untersuchen, welcher der möglichen Fälle wirklich vorliegt.

                                              So long,
                                               Martin

                                              --
                                              Ich verdanke meinen Eltern so viel - besonders meiner Mutter und meinem Vater.
                                                (Dakota Fanning, US-Jungschauspielerin)
                                              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                              1. nein, du hast es immer noch nicht erfasst.

                                                Hat es nicht. Du hast in vier oder fünf Abfragen denselben Wortlaut für den Fehlerfall, und wenn diese Meldung ausgegeben wird, nimmst du einfach an, sie käme vom ersten Abfragezweig. Dass es aber vielleicht der dritte oder vierte war, der die Meldung ausgibt, hast du nicht bedacht.

                                                Neeeein...!

                                                <input type="hidden" value="Gott bin ich Doof">

                                                -Ohne Worte-

                                                Gruß

                                                Mr. Anonymous

                                        2. Hi,

                                          if(!twintwo.match(/^(\d\d).(\d\d).(\d\d\d\d)/))  {
                                          alert("Bitte Geb.Datum nur im Format tt.mm.jjjj eingeben!"); <-- Hier steigt er aus!

                                          Hm. Berücksichtigst Du auch, daß der Ausdruck auch bei
                                          04.09.2010xyz
                                          matcht?

                                          Du hast zwar den Regex am Stringanfang verankert, aber nicht am Ende, d.h. nach dem vierstelligen Jahr kann noch beliebiger Kram stehen.
                                          Ich schenk Dir mal ein $ zur freien Verwendung ;-)

                                          Ich würde die User auch nicht zwingen, die führenden Nullen mit einzugeben.

                                          cu,
                                          Andreas

                                          --
                                          Warum nennt sich Andreas hier MudGuard?
                                          O o ostern ...
                                          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
                                          1. Hallo,

                                            if(!twintwo.match(/^(\d\d).(\d\d).(\d\d\d\d)/))  {
                                            alert("Bitte Geb.Datum nur im Format tt.mm.jjjj eingeben!"); <-- Hier steigt er aus!
                                            Hm. Berücksichtigst Du auch, daß der Ausdruck auch bei
                                            04.09.2010xyz
                                            matcht?

                                            nein, er verlässt sich darauf, dass aufgrund des maxlength-Attributs beim input-Element die Länge begrenzt ist. Kann ich ihm nicht verdenken: Wer auf eine Eingabe-Validierung mit Javascript vertraut, wird vermutlich auch solche Angaben als unumstößlich sehen.

                                            Ich würde die User auch nicht zwingen, die führenden Nullen mit einzugeben.

                                            Ich auch nicht - aber ich würde mir wünschen, dass mehr Leute das beim Schreiben im Alltag tun. Ich finde das lesefreundlicher (dass sich das Datum im ISO-Format mal durchsetzt, will ich ja gar nicht erst träumen).

                                            So long,
                                             Martin

                                            --
                                            Niemand lebt allein von seinen Träumen.
                                            Aber wer träumt, lebt noch.
                                            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                          2. Ich würde die User auch nicht zwingen, die führenden Nullen mit einzugeben.

                                            Das das ganze sowieso nicht Benutzerfreundlich sein soll, macht das auch nichts mehr.

                                            Struppi.

                                            1. Hi Struppi

                                              Das das ganze sowieso nicht Benutzerfreundlich sein soll, macht das auch nichts mehr.

                                              Ich nehme an du beziehst dich auf das gesperrte "Return"?

                                              Was ist benuzerfreundlicher:

                                              A[ ]
                                              Ein Programm, das zur Speicherung von Daten einen Klick auf einen Button erwartet?

                                              B[ ]
                                              Ein Programm, daß durch versehentliches Speichern seinen Dienst quittiert und einen internen Fehler erzeugt?

                                              Ich habe hier mehrfach abgesichert:
                                              1)Senden nur durch Klick.
                                              2)Einzelüberprüfung der wichtigen Felder auf "Leere".
                                              3)Ausgewählte Formatüberprüfung bei speziellen Feldern.

                                              Und da die Software nur im Büro und durch i. d. R. unterwiesenes Personal erfolgt, braucht es ja auch nicht zwingend "Dubelesicher"(*) zu sein. Zu viel Kontrolle behindert auch. Außerdem gibt es Felder, die auch keiner Eingabe bedürfen (System "X"t diese aus)

                                              Gruß Gary

                                              (*) allemannischer Ausdruck! -> in etwa Idiotensicher/Noob-Sicher

                                              1. [latex]Mae  govannen![/latex]

                                                Ich nehme an du beziehst dich auf das gesperrte "Return"?

                                                Was ist benuzerfreundlicher:

                                                A[ ]
                                                Ein Programm, das zur Speicherung von Daten einen Klick auf einen Button erwartet?

                                                B[ ]
                                                Ein Programm, daß durch versehentliches Speichern seinen Dienst quittiert und einen internen Fehler erzeugt?

                                                C[X] Ein Programm, welches, solange nicht alle Pflichfelder ausgefüllt wurden, weder bei Klick noch Enter  versehentlich speichert und auch keinerlei Fehler verursacht, sondern "nur" die nicht (korrekt) ausgefüllten Felder hervorhebt.

                                                Ein Verhalten wie in "B" zeugt nur von mangelnden Programmierfähigkeiten.
                                                Per Enter/Return-Taste kann man auch, wenn nicht alle Pflichtfelder ausgefüllt sind, einfach nur eine weitere
                                                Runde der Feld-Überprüfung auslösen, solange, bis die gewünschten Bedingungen erfüllt sind. Wenn da "versehentlich gespeichert" wird, ist die Programmlogik kaputt.

                                                Cü,

                                                Kai

                                                --
                                                Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
                                                in Richtung "Mess up the Web".(suit)
                                                SelfHTML-Forum-Stylesheet
                                              2. Das das ganze sowieso nicht Benutzerfreundlich sein soll, macht das auch nichts mehr.

                                                Ich nehme an du beziehst dich auf das gesperrte "Return"?

                                                auch.

                                                Was ist benuzerfreundlicher:

                                                A[ ]
                                                Ein Programm, das zur Speicherung von Daten einen Klick auf einen Button erwartet?

                                                B[ ]
                                                Ein Programm, daß durch versehentliches Speichern seinen Dienst quittiert und einen internen Fehler erzeugt?

                                                C[X] Ein Programm, dass sich so verhält wie die meisten anderen und das bei einem oder mehren Fehleingaben *eine* Meldung ausgibt und nicht bei jedem Feld auf's neue ein modale Meldung nazeigt, weg geklickt werden muss.

                                                Ich habe hier mehrfach abgesichert:
                                                1)Senden nur durch Klick.
                                                2)Einzelüberprüfung der wichtigen Felder auf "Leere".
                                                3)Ausgewählte Formatüberprüfung bei speziellen Feldern.

                                                Und da die Software nur im Büro und durch i. d. R. unterwiesenes Personal erfolgt, braucht es ja auch nicht zwingend "Dubelesicher"(*) zu sein. Zu viel Kontrolle behindert auch. Außerdem gibt es Felder, die auch keiner Eingabe bedürfen (System "X"t diese aus)

                                                Zuviel Kontrolle und unterbrechung des Arbeitsflusses, ist genau das was ich deinem Ansatz unterstelle.

                                                Struppi.

              2. Mahlzeit Gary,

                Meiner DB nicht - dort liegt alles in Strings vor (.csv- separiert),

                Interessante "Datenbank".

                Ein ordentliches _deutsches_ Datum hat so >> tt.mm.jjjj << auszusehen -mit Null!

                Falsch. Das ist nur ein optionale Schreibweise der deutschen DIN 5008. Für Dich wären vermutlich eher die ISO 8601 bzw. EN 28601 interessant/relevant - und da ist ein solches Format überhaupt nicht vorgesehen.

                Relevant wären führende Nullen allerhöchstens bei der *Ausgabe* der Daten.

                Alle Bearbeitungsroutinen erwarten den Datumswert bereits in tt.mm.jjjj - eine entsprechende Nullbehandlung ist dort schon inklusive.

                Dann solltest Du beim *Schreiben* der Daten in die "Datenbank" dieses Format sicherstellen - bei der Prüfung, ob es sich um ein gültiges Datum handelt, sind führende Nullen aber trotzdem nicht zwingend erforderlich.

                Es ist in jedem Fall sinnvoller, das in Javascript vorhandene Date-Objekt und seine Methoden bei der Datumsbehandlung und -prüfung zu nutzen, als irgendwelche eigenen obskuren und unvollständigen Prüfungen auf Basis von String-Werten zusammenzuschustern.

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Es ist in jedem Fall sinnvoller, das in Javascript vorhandene Date-Objekt und seine Methoden bei der Datumsbehandlung und -prüfung zu nutzen, als irgendwelche eigenen obskuren und unvollständigen Prüfungen auf Basis von String-Werten zusammenzuschustern.

                  Wenn er schon diesen Code nicht versteht oder nicht verstehen will, wird's schwierig. Gary ist halt Gary.

                  Struppi.

              3. Hi,

                Meiner DB nicht - dort liegt alles in Strings vor (.csv- separiert), so das auch ein Mensch aus Fleisch und Blut zur Not im Fall der Fälle was erkennen kann. Alle Daten sind so dort drin, daß man sie auch direkt ausgeben kann. Ähnlich dem WYSIWYG-Prinzip halte ich es auch mit gespeicherten Daten.

                Ein ordentliches _deutsches_ Datum hat so >> tt.mm.jjjj << auszusehen -mit Null!

                Bei der Ausgabe vielleicht.

                Alle Bearbeitungsroutinen erwarten den Datumswert bereits in tt.mm.jjjj

                Dann ist das ein weiterer Fehler.

                Spätestens, wenn du nach dem Datum sortieren willst, bekommst du mit dem deutschen Format Probleme.

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
                1. Mahlzeit ChrisB,

                  Spätestens, wenn du nach dem Datum sortieren willst, bekommst du mit dem deutschen Format Probleme.

                  Nein.

                  *Das* deutsche Format ist JJJJ-MM-TT ... die "herkömmliche" (und allgemein üblichere) Schreibweise TT.MM.JJJJ ist lediglich optional.

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      3. Hi,

        Das mit dem (Input) "value" ist Käse!

        Nein, du bist (bzw. dein Verständnis von dem, was dir zu lesen empfohlen wird), ist Käse.

        Value ist eine Vorbelegung für das Inputfeld, welches nicht existiert, da ja der Nutzer die Eingabe erst noch tätigen muss.

        Falsch geraten - also noch mal, endlich informieren!

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    2. Hi ChrisB

      OK. Im Beispiel steht:
      --------------------------
      document.Testform.Browser.value = navigator.userAgent;
      --------------------------

      Wobei "Testform" für den Formularnamen steht:
      --------------------------
      <form name="Testform" action="">
      --------------------------

      In meinem Formular gibt es kein Name:
      --------------------------
      <form action="http://localhost/cgi-bin/xxx.pl" method="get">
      --------------------------

      Angepasst an meine Seite:
      --------------------------
      document.geboren.value = Geboren;
      --------------------------

      Kann man den Namen bei form name"Testform" weglassen, wenn kein Formname vergeben?

      Gruß Gary

      1. Hi,

        In meinem Formular gibt es kein Name:

        Es gibt andere Methoden, um auf Formulare bzw. HTML-Elementobjekte allgemein zuzugreifen.

        Angepasst an meine Seite:

        document.geboren.value = Geboren;

        Nein, das wird nicht funktionieren.

        Kann man den Namen bei form name"Testform" weglassen, wenn kein Formname vergeben?

        Nein, zumindest nicht, wenn man diese Zugriffs-Variante nutzen will.

        Aber auch das zählt eigentlich zum Bereiche Grundlagenwissen über JavaScript und insb. Umgang mit dem DOM.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Mahlzeit Gary,

    Ich habe diesen Code mal erdacht:

    Beherzige bitte, was ChrisB zum Themenkomplex "Pferde und ihre Köpfe" nicht geschrieben, sondern nur angedeutet hat.

    var Stelle1 = Geburt.substr(0, 1);
    var Stelle2 = Geburt.substr(1, 1);

    Variablen, die fortlaufend nummeriert benannt sind, sind *IMMER* ein Indiz dafür, dass sich irgendjemand™ nicht (ausreichend) über http://de.selfhtml.org/javascript/objekte/array.htm@title=Arrays informiert hat.

    In diesem konkreten Fall sind sie jedoch außerdem noch ein Indiz dafür, dass Du Dich darüber hinaus auch nicht über das http://de.selfhtml.org/javascript/objekte/string.htm@title=String-Objekt (und seine Methoden) informiert hast.

    Hole beides *intensivst* nach!

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Gute Nacht zusammen

    Gewünschte Funktion zur Formaterzwingung: TT.MM.YYYY geht jetzt schon fast.

    Das einzige Problem ist, das bei Falsch- oder gar keiner Eingabe die Alert-Box 2x erscheint! Einfach auf Speichern klicken, und ihr seht was ich meine...

    Warum tut sie das bzw. ist das so?

    Gruß bis Morgen

    Gary

    1. Das einzige Problem ist, das bei Falsch- oder gar keiner Eingabe die Alert-Box 2x erscheint! Einfach auf Speichern klicken, und ihr seht was ich meine...

      Warum tut sie das bzw. ist das so?

      Weil du die Funktion checkDatum() zweimal aufrufst, einmal im Formular "onSubmit" und einmal im Subit-Input "onClick".
      Ohne mich festlegen zu wollen, denke ich ersteres ist die bessere Idee, einfach falls jemand nicht klickt sondern das Formular anders absendet.
      Wenn du möchtest kannst du die Überprüfung aber auch schon onBlur auf dem Datums-Input durchführen.
      Dabei würde ich auch auf alert() verzichten und stattdessen:
      Entweder raten was das für ein Datum sein soll und direkt ins Value reinschreiben, der Benutzer kann es dann ja nochmal korrigieren.
      Oder du "markierst" den Fehler irgendwie optisch, z.B. indem du den Hintergrund des Input rot schaltest oder ein Element darunter oder darüber einfügst, welches die Fehlermeldung enthält.
      (oder beides, automatisch korrigieren und optisch drauf hinweisen "schau's dir nochmal an")
      "Alert" ist meistens eher nervig als nützlich.
      In keinem Fall kommst du darum herum das ganze auf der Serverseite nochmal zu prüfen. Was du dann machst sei dir überlassen, entweder zu rätst einfach irgendwie was für ein Datum das nun gewesen sein mag (fehlertollerantes Parsen) oder du schreibst einen Default-Wert in die Datenbank, die die auslesende Software dann als "Geburtsdatum nicht angegeben" interpretiert oder du gibst das Formular wieder zurück und bittest um Korrektur.

      Derzeit prüfst du gegen
      /^\d\d.\d\d.\d\d\d\d/
      Wäre es nicht besser gegen /^\d?\d.\d?\d.(\d\d){1,2}$/ zu prüfen? Das ist immernoch nicht sehr präzise (weil eben alle Ziffern gültig sind) aber ein Schritt besser imho. (Man kann den gleichen Ausdruck auch anders schreiben, aber ich glaube diese Variante ist recht Zeichen-Sparsam, keine Ahnung ob sie performant ist.)

      Wenn dir die Sache mit den führenden Nullen so wichtig ist füge sie einfach selbst hinzu.
      Du benutzt Perl und ich hab keine Ahnung von Perl, daher hier Pseudocode:
      Setze Datums-Array auf Teile($_POST['geboren'],'.');
      Solange ($Datums-Array[0].Länge < 2) Mach { Setze $Datums-Array[0] auf '0'+$Datums-Array[0]; }
      Solange ($Datums-Array[1].Länge < 2) Mach { Setze $Datums-Array[1] auf '0'+$Datums-Array[1]; }
      Wenn ($Datums-Array[2].Länge == 1 ODER $Datums-Array[2].Länge == 3) Mach { Setze $Fehler auf "wahr"; /* Damit das Formular zur Korrektur zurück gegeben wird */ }
      Wenn ($Datums-Array[2].Länge == 2) Mach { Setze $Datums-Array[0] auf '19'+$Datums-Array[0]; }

      Aber wie andere schon sagten ist es eigentlich viel einfacher und sinnvoller das Perl machen zu lassen:
      Versuche {
       Mach-Datum-Aus-Zeichenkette($_POST['geboren']);
      } /*bei misslingen*/ fangeFehler {
       Gibt_Formular_zurueck_weil_es_einer_Korrektur_bedarf();
      }

      (Pseudocode-Code-Wörterbuch:
      Sete auf = Variablen setzen
      Teile = split/explode...
      Solange = while oder if+repeat
      [0] = Array-Zugriff auf einzelne Elemente
      Mach = Bedingte Anweisung
      Wenn = if
      ODER = OR | ||
      "wahr" = true

      • = Verkettungsoperator
        Versuche...fangeFehler = try...catch (in manchen Sprachen auch ohne try dafür mit if)
        Mach-Datum-Aus-Zeichenkette() = String2Date, parseDate, date_parse (...)
        )
      --
      sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
      1. oh ich habe den obligatorischen Hinweis auf den Datum-Input-Typ vergessen:
        <input type="date" />
        Derzeit afaik nur in Opera aber alle anderen machen ja "text" draus, also hat man nichts verloren und ggf. was gewonnen :)

        --
        sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
      2. Morgen Deus Figendi

        Warum tut sie das bzw. ist das so?
        Weil du die Funktion checkDatum() zweimal aufrufst, einmal im Formular "onSubmit" und einmal im Subit-Input "onClick".
        Ohne mich festlegen zu wollen, denke ich ersteres ist die bessere Idee, einfach falls jemand nicht klickt sondern das Formular anders absendet.

        Danke - genau das war's! Hab so wie von dir geraten das im Form-Element gemacht...

        Vielen Dank

        gruß Gary

  4. Hi,

    if (Stelle1 ==< 3 and Stelle2 ==< 9 and Stelle3 == "." and Stelle4 ==< 1 and Stelle5 ==< 2 and Stelle6 == "." and Stelle7 ==< 3 and Stelle8 ==< 9 and Stelle9 == 9 and Stelle10 ==< 9) {}

    Welche Programmiersprache soll das eigentlich sein? Ich kenn zwar einige, aber mir fällt im Moment keine ein, die ==< als Operator kennt.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hi MudGuard

      Welche Programmiersprache soll das eigentlich sein? Ich kenn zwar einige, aber mir fällt im Moment keine ein, die ==< als Operator kennt.

      Ja ist gut, hab ich jetzt schon öfters gelesen. Es ist nur ein "="-Zeichen - ok!

      Hab es mit Vergleich "==" Verwechselt, da ja nur ein "="-Zeichen kein Vergleich sondern eine Zuweisung ist... so - jetzt haben alle ienmal gelacht *LOL*

  5. Ich habe diesen Code mal erdacht:

    var Geburt;
    var Stelle1 = Geburt.substr(0, 1);
    var Stelle2 = Geburt.substr(1, 1);
    var Stelle3 = Geburt.substr(2, 1);
    var Stelle4 = Geburt.substr(3, 1);
    var Stelle5 = Geburt.substr(4, 1);
    var Stelle6 = Geburt.substr(5, 1);
    var Stelle7 = Geburt.substr(6, 1);
    var Stelle8 = Geburt.substr(7, 1);
    var Stelle9 = Geburt.substr(8, 1);
    var Stelle10 = Geburt.substr(9, 1);

    Argh, was soll das? Wenn du durchnummerierte Variabeln hast, willst du ein Array.

    var stellen = Geburt.split(//);

    Und nun suche ich eine Möglichkeit, die Variable "var Geburt" mit der gemachten Eingabe in diesem Imputfeld nach "submit" zu füllen:

    Ich finde es nach wie vor extrem unpraktisch, dass man dein Formular nicht wie in allen anderen Anwendungen auch, mit Enter abschicken kann.

    PS:Das Selfbeispiel habe ich gesehen. Ist aber viel zu kompliziert mit dem "Parse" und "neues Objekt". Außerdem geht das nicht bei allen Browsern. Für meine Zwecke würde eine einfache IF-Überprüfung nach obrigem Beispiel völlig reichen.

    Was ist denn daran denn kompliziert? Es ist eine kurze einfache Funktion (die eigentlich in allen Browsern laufen sollte, in welchem geht es nicht?), das was du weiter oben gezeigt hast, dass ist kompliziert.

    Struppi.