Problem mit Funktion
Raucherkrebs
- javascript
Es gibt folgende Funktionen:
function checkBirthday(form) {
if (!form.birthday.value || !form.birthmonth.value || !form.birthyear.value) {
alert("Bitte geben Sie Ihr Geburtsdatum ein ?");
form.birthday.focus();
return false;
} else if (isNaN(form.birthday.value) || isNaN(form.birthmonth.value) || isNaN(form.birthyear.value)){
alert("Bitte geben Sie Ihr ein korrektes Geburtsdatum im Format TT/MM/JJJJ ein ?");
form.birthday.focus();
return false;
} else {
birthdate = form.birthday.value + form.birthmonth.value + form.birthyear.value;
var err = checkDate(birthdate);
switch (err) {
case "0":
return true;
break;
case "19":
alert("Bitte führende Nullen beim Datum mit angeben.");
form.birthday.focus();
return false;
break;
case "20":
alert("Bitte korrekte Jahreszahl eingeben.");
form.birthyear.focus();
return false;
break;
case "21":
alert("Bitte korrekte Monatszahl eingeben.")
form.birthmonth.focus();
return false;
break;
case "22":
alert("Fehler im Datum.")
form.birthday.focus();
return false;
break;
case "23":
alert("Fehler im Datum.")
form.birthday.focus();
return false;
break;
case "24":
alert("Dieser Monat hat nicht so viele Tage.");
form.birthmonth.focus();
return false;
break;
case "25":
alert("Bitte korrekte Monatstag eingeben.")
form.birthday.focus();
return false;
break;
case "26":
alert("Fehler im Datum.")
form.birthday.focus();
return false;
break;
}
}
}
function checkDate(date){
var checkstr = "0123456789";
var DateField = "";
var Datevalue = date;
var DateTemp = "";
var seperator = ".";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;
err = 0;
/* Delete all chars except 0 .. 9 */
for (i = 0; i < DateValue.length; i++) {
if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
DateTemp = DateTemp + DateValue.substr(i,1);
}
}
DateValue = DateTemp;
/* Always change date to 8 digits - string*/
/* if year is entered as 2-digit / always assume 20xx */
if (DateValue.length == 6) {
DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2);
}
if (DateValue.length != 8) {
err = 19;
}
/* year is wrong if year = 0000 */
year = DateValue.substr(4,4);
if (year == 0) {
err = 20;
}
/* Validation of month*/
month = DateValue.substr(2,2);
if ((month < 1) || (month > 12)) {
err = 21;
}
/* Validation of day*/
day = DateValue.substr(0,2);
if (day < 1) {
err = 22;
}
/* Validation leap-year / february / day */
if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
leap = 1;
}
if ((month == 2) && (leap == 1) && (day > 29)) {
err = 23;
}
if ((month == 2) && (leap != 1) && (day > 28)) {
err = 24;
}
/* Validation of other months */
if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
err = 25;
}
if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
err = 26;
}
/* if 00 ist entered, no error, deleting the entry */
if ((day == 0) && (month == 0) && (year == 00)) {
err = 0; day = ""; month = ""; year = ""; seperator = "";
}
return err;
}
Das Problem ist nun, dass von der zweiten Funktion kein error code zurückgegeben wird. Rufe ich die falsch auf. Bin ratlos.
Hallo,
Das Problem ist nun, dass von der zweiten Funktion kein error code zurückgegeben wird.
Deklariere die Variable "err" global, also außerhalb der Funktionen.
Die Datumspruefung laesst sich ueber das date-Objekt auch wesentlich vereinfachen:
function checkDate(tag,monat,jahr)
{
var datum=new Date(jahr,monat-1,tag);
return(datum.getDate()==tag && datum.getMonth()==monat-1 && datum.getFullYear()==jahr);
}
if(checkDate(29,2,2004))alert("Datum ist gueltig.");
else alert("Datum ist ungueltig.");
MfG, Thomas