Datenschutzerklärung

Eingegebenes Datum darf nicht NACH festgelegtem Datum liegen

Validome - Forum

Startseite Validome
RSS 2.0  
Sie sind nicht angemeldet. Atom 1.0  
Forum Home / Javascript-Forum /

Eingegebenes Datum darf nicht NACH festgelegtem Datum liegen

  Beitrag schreiben
Autor
Beitrag Seiten: 1
jk296
Mitglied

Registriert: 28.02.2007
Beiträge: 22
Hallo,

habe folgende Anweisung:

var s = document.Formular.Datum.value;
var erg = s.match(/[0-9]{1,2}.[0-9]{1,2}.[0-9]{4}/gi);
if(!erg) {
alert("Bitte das Datum korrekt eingeben!");
document.Formular.Datum.focus();
return false;
}

Jetzt soll geprüft werden, ob das eingegebene Datum nach einem festgelegten Datum, z. B. 01.01.2000, liegt. Wenn ja, dann Fehlermeldung.

Danke schon mal für eure Hilfen.

Gruß.

PS: Wie muss ich den Code ändern, damit z. B. das Datum 34.15.7000 als fehlerhaft gilt?


04.03.2008 16:01:36
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hi,

Jetzt soll geprüft werden, ob das eingegebene Datum nach einem festgelegten Datum, z. B. 01.01.2000, liegt.

Beschäftige Dich mal mit http://www.validome.org/doc/HTML_ge/jav ... e/date.htm
Mit getTime() oder parse() 2 Zeitpunkte definieren und vergleichen.

Wie muss ich den Code ändern, damit z. B. das Datum 34.15.7000 als fehlerhaft gilt

Siehe http://aktuell.de.selfhtml.org/artikel/ ... /index.htm


_______________________________________
mfg
Thomas Mell

www.validome.org

04.03.2008 17:43:52
  Zitieren
jk296
Mitglied

Registriert: 28.02.2007
Beiträge: 22

HTMELL schrieb:


Beschäftige Dich mal mit http://www.validome.org/doc/HTML_ge/javascript/objekte/date.htm.
Mit getTime() oder parse() 2 Zeitpunkte definieren und vergleichen.


Link geht nicht. Außerdem habe ich kaum Ahnung von der JS-Syntax. Wie definierte und vergleiche ich die Zeitpunkte in Verbindung zum Formular?


HTMELL schrieb:


Siehe http://aktuell.de.selfhtml.org/artikel/javascript/datumueberpruefen/index.htm


Cool, danke.
Allerdings sehe ich darin irgendwie nicht die Verbindung zum Formular. Beim Ausprobieren kam nur ne Meldung mit true, dann noch irgendne Meldung (es soll ja nichts weiter als EINE Fehlermeldung kommen) und dann auf einmal schon ne Meldung in Bezug auf das nächste Feld im Formular (ohne dass – zwecks Korrektur – in das Datumsfeld zurückgesprungen wurde).
Im Übrigen soll das Format ja tt.mm.jjjj – also so und nicht anders (nicht t.m.jjjj oder tt.mm.jj o. Ä.) – sein. Im Artikel ist es ja, glaube ich, ohne die Nullen. Jetzt weiß ich natürlich nicht, wie ich GERADE dieses Format erziele.

Beitrag geändert von jk296 (04.03.2008 21:34:39)


04.03.2008 21:22:59
  Zitieren
dkdenz
Administrator

Ort: Lübeck
Registriert: 25.04.2005
Beiträge: 605

jk296 schrieb:


Link geht nicht. Außerdem habe ich kaum Ahnung von der JS-Syntax. Wie definierte und vergleiche ich die Zeitpunkte in Verbindung zum Formular?


Hi

Link geht!

Irgendwie musst Du Dich schon mal entscheiden.
Du willst ein JavaScript einsetzen, welches Du nicht schreiben kannst, aber mit den Links beschäftigen willst Du Dich auch nicht.
Soll Dir das jetzt auf dem silbernen Tablett serviert werden?
Zudem hast Du in einem anderen Forum auch schon konkrete Tipps bekommen.

Viel Spaß noch...


_______________________________________
Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.14eol) Gecko/20080418 Ubuntu/dapper-security Firefox/1.5.0.12eol

04.03.2008 23:13:46
http://dkmd.de | http://dkdenz.de Zitieren
jk296
Mitglied

Registriert: 28.02.2007
Beiträge: 22

dkdenz schrieb:


Link geht!


Hast Recht. Vergessen, nach Copy/Paste den Punkt am Ende wegzunehmen.


dkdenz schrieb:


aber mit den Links beschäftigen willst Du Dich auch nicht.


Nicht WOLLEN ist gut. Will immer gern mein Wissen erweitern, nur leider KANN ich das zurzeit nicht, jedenfalls nicht auf lange Sicht. Sonst natürlich würde ich mir JS von Grund auf erarbeiten (vor allem Grundlagen fehlen mir), keine Sorge. Zwar habe ich gerade frei, aber das nutze ich natürlich wieder zum Arbeiten (insbesondere an meinem Web-Projekt) und Zeit ist wie immer knapp.


dkdenz schrieb:


Soll Dir das jetzt auf dem silbernen Tablett serviert werden?


Um ehrlich zu sein: ja ... d. h. für diesen Fall! (Bitte keine Grundsatz-Diskussion jetzt ... muss ich nicht haben!)


dkdenz schrieb:


Zudem hast Du in einem anderen Forum auch schon konkrete Tipps bekommen.


So weit, so gut, aber eben „nur“ Links oder die Objekte, die wichtig sind, was mir nicht wirklich hilft.


05.03.2008 02:23:46
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hi,

Code:

var s = document.Formular.Datum.value;
var erg = s.match(/[0-9]{1,2}.[0-9]{1,2}.[0-9]{4}/gi);
if(!erg || !gueltigesDatum(s)) {
alert("Bitte das Datum korrekt eingeben!");
document.Formular.Datum.focus();
return false;
}

Sollte funktionieren. Du mußt natürlich noch die function von SELFHTML einfügen.


_______________________________________
mfg
Thomas Mell

www.validome.org

05.03.2008 12:03:17
  Zitieren
jk296
Mitglied

Registriert: 28.02.2007
Beiträge: 22
Also, irgendwie funktioniert das SELFHTML-Script nicht (jedenfalls nicht so, wie ich es mir vorstelle).

Das Datum soll nur dann korrekt sein, wenn

a) das Format tt.mm.jjjj, und zwar NICHT t.m.jjjj, tt.mm.jj o. Ä., ist (bei t.m.jjjj kommt keine Fehlermeldung!, aber bei tt.mm.jj)

b) fehlerfrei ist (nicht etwa 34.15.7000) und

c) NICHT NACH (= vor oder am gleichen) Datum, und zwar 01.01.2000, liegt!

Wie ist die function gueltigesDatum zu ändern? Übrigens, steht die Anweisung var erg = s.match(/[0-9]{1,2}.[0-9]{1,2}.[0-9]{4}/gi); nicht schon in der function?


07.03.2008 22:34:47
  Zitieren
jk296
Mitglied

Registriert: 28.02.2007
Beiträge: 22
Auch das kriege ich noch immer nicht hin. (Werde noch wahnsinning!) Bitte noch mal um Hilfe.

08.03.2008 23:54:44
  Zitieren
HTMELL
Administrator

Registriert: 11.05.2006
Beiträge: 544
Hi,
nimm das da ;-)

Code:

function gueltigesDatum(datum) {
  if(!datum.match(/[0-9]{2}.[0-9]{2}.[0-9]{4}/)) return false;
  datum = datum.toString();
  datum = datum.split(".");
  datum[0] = parseInt(datum[0], 10);
  datum[1] = parseInt(datum[1], 10)-1;
  var kontrolldatum = new Date(datum[2], datum[1], datum[0]);
  if(kontrolldatum.getDate() == datum[0] && kontrolldatum.getMonth() == datum[1] && kontrolldatum.getFullYear() == datum[2]) {
    var zt = Date.UTC(2000, 0, 1);
    var jz = Date.UTC(datum[2], datum[1], datum[0]);
    return jz <= zt;
  }
  return false;
}



_______________________________________
mfg
Thomas Mell

www.validome.org

09.03.2008 01:52:00
  Zitieren
jk296
Mitglied

Registriert: 28.02.2007
Beiträge: 22
Supi! Funzt! Danke!

09.03.2008 03:59:45
  Zitieren
Seiten: 1   Beitrag schreiben
Wechsel zu

Die letzten Beiträge aus diesen Forum

Valid HTML 4.01