Ralf_fragt
Grünschnabel
Moin!
Folgendes (hierzu mal abgespecktes) Script verliert das errechnete Datum "datum_anfang". Warum / Was mache ich falsch ?
Zweck:
Ein Datum aus Formular soll auf gültigen Zeitraum überprüft werden. Der gültie Zeitraum ist von >heute+2 Tage< bis >heute+35 Monate<. Um die >2 Tage< wird datum_anfang hochgezählt. Um die >35 Monate< wird datum_ende hochgezählt.
Am Ende soll >datum_anfang <= datum_check <> datum_ende< das Ergebnis liefern ob Eingabe okay.
Der Fehler:
Zwischen den beiden markierten / kommentierten alerts geht das gerade noch richtig errechnete Datum verloren ODER wird duch datum_ende überschreiben.
Habe Euch alerts zur Kontrolle eingebaut...
Zwischen dem noch richtrigen und dann dem falschen Wert, wird das Datumsfeld nicht angesprochen...
Vielen Dank für Eure Hilfe!
Ralf
Folgendes (hierzu mal abgespecktes) Script verliert das errechnete Datum "datum_anfang". Warum / Was mache ich falsch ?
Zweck:
Ein Datum aus Formular soll auf gültigen Zeitraum überprüft werden. Der gültie Zeitraum ist von >heute+2 Tage< bis >heute+35 Monate<. Um die >2 Tage< wird datum_anfang hochgezählt. Um die >35 Monate< wird datum_ende hochgezählt.
Am Ende soll >datum_anfang <= datum_check <> datum_ende< das Ergebnis liefern ob Eingabe okay.
Der Fehler:
Zwischen den beiden markierten / kommentierten alerts geht das gerade noch richtig errechnete Datum verloren ODER wird duch datum_ende überschreiben.
Code:
function check_datum_vld_ztrm(check_form_feld,anz_vlf_tage,anz_vlf_monate)
{
var datum_param = document.getElementById(check_form_feld).value;
var jahr_param = parseInt(datum_param.substr(6,4));
var monat_param = parseInt(datum_param.substr(3,2))-1;
var tag_param = parseInt(datum_param.substr(0,2));
var jahr_anfang,monat_anfang,tag_anfang,jahr_ende,monat_ende,tag_ende;
var sep = ".";
var datum_heute = new Date();
var datum_check = new Date(jahr_param,monat_param,tag_param);
var datum_anfang = new Date();
var datum_ende = new Date();
// Heutiges Datum als Ausgangspunkt für alle Datumsberechnungen setzen
datum_anfang = datum_heute;
datum_ende = datum_heute;
anz_vlf_tage = 2;
// anfangangsdatum = HEUTE plus 2 Tage für Vorlauf
tag_anfang = parseInt(datum_anfang.getDate()) + anz_vlf_tage;
datum_anfang.setFullYear(jahr_anfang);
datum_anfang.setMonth(monat_anfang);
datum_anfang.setDate(tag_anfang);
jahr_anfang = datum_anfang.getFullYear();
monat_anfang = parseInt(datum_anfang.getMonth())+1;
tag_anfang = datum_anfang.getDate();
alert("Anfangangsdatum neu:\n" + datum_anfang + "\n" + tag_anfang + sep + monat_anfang + sep + jahr_anfang + "\n vorgesetzt um " + anz_vlf_tage + " Tage");
alert(datum_anfang); // HIER NOCH ALLES OK = datum_anfang is RICHTIG
anz_vlf_monate = 35;
// End-Datum = HEUTE plus anz_vlf_monat Monate Vorlauf für Gültigkeit
datum_ende.setMonth(anz_vlf_monate);
jahr_ende = datum_ende.getFullYear();
monat_ende = parseInt(datum_ende.getMonth())+1;
tag_ende = datum_ende.getDate();
alert("Ende-Datum neu:\n" + datum_ende + "\n" + tag_ende + sep + monat_ende + sep + jahr_ende + "\nvorgesetzt um " + anz_vlf_monat + " Monate");
alert(datum_anfang); // AB HIER HAT datum_anfang SEINEN INHALT VEROREN ODER DEN WERT VON datum_ende ÜBERNOMMEN?
// Vergleichen
if (datum_anfang <= datum_check && datum_check <= datum_ende)
{
// OK .........
}
else
{
// Fehler: Eingegebenes Datum check liegt außhalb des gültigen Zeitraums
alert("Falsche Angabe!\nIhre Angabe\n>" + datum_param + "< / " + datum_check + "\n liegt außerhalb des gültigen Zeitraums vom\n>" + tag_anfang + sep + monat_anfang + sep + jahr_anfang + "< / " + datum_anfang + " bis\n>" + tag_ende + sep + monat_ende + sep + jahr_ende + "< / " + datum_ende + "<.\n\n Bitte gültiges Datum eingeben!");
}
}
Habe Euch alerts zur Kontrolle eingebaut...
Zwischen dem noch richtrigen und dann dem falschen Wert, wird das Datumsfeld nicht angesprochen...
Vielen Dank für Eure Hilfe!
Ralf