Hallo
hier ist mein Script:
Kann es mal bitte jemand von euch testen und mir sagen, wieso sich das Script nicht ausführen lässt. Wenn ich Teile davon teste funktioniert es einwandfrei.
Was es können soll ist folgendes:
- Bei der Eingabe eines Datums soll möglich sein, dass man das Datum auch per Komma eintragen kann,
- dass die Kommas durch Punkte ersetzt werden,
- dass das Datum auf Gültigkeit validiert wird.
- dass kein Datum in der Zukunft liegen kann.
- dass
Testdatensätze sind zum Beispiel:
(1) 1,1,09 = 01.01.1909
(2) 31,12,08 = 31.12.2008
(3) 32,12,3 = ungültig
(4) 24,08,78 = 24.08.1978
(5) 13.05.77 = 13.05.2077
(5) 00.01.76 = ungültig
Hoffe es weiß jemand von euch weiter.
@edit:
Ich hab das mit den Klammern jetzt verbessert. Allerdings gibt es immer noch ein Problem mit den Werten 8 und 9 bei den Wochen, Monaten und Jahren.
... Jemand noch ne Idee
hier ist mein Script:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Testseite!</title>
<script type="text/javascript" >
function checkDate(field, namevar)
{
var now = new Date();
//thisyear is 2008 == 2008
var thisyear = parseInt(now.getFullYear());
//replace of coma for point, if exits!
var datum = field.value;
datum = datum.replace(/,/g, ".");
if(datum != null && datum.length >= 0 && datum.length <= 10)
{
var sVD = datum.split(".");
if(sVD.length == 3)
{
if(sVD[0].length == 1)
sVD[0] = "0" + sVD[0];
if(sVD[1].length == 1)
sVD[1] = "0" + sVD[1];
if(sVD[2].length == 2)
{
if((thisyear - 2000) > parseInt(sVD[2]))
sVD[2] = "20" + sVD[2];
else
sVD[2] = "19" + sVD[2];
}
if(!(parseInt(sVD[0] >= 1 && parseInt(sVD[0] <= 31) ||
!(parseInt(sVD[1] >= 1 && parseInt(sVD[1] <= 12) ||
!(parseInt(sVD[2] >= (thisyear - 130) && parseInt(sVD[2]) <= thisyear))
{
window.alert("Die Zeichenkette '" + datum + "' kann nicht konvertiert werden! Bitte im Format (DD.MM.YYYY) oder (DD,MM,YYYY) oder (D.M.YY) oder (D,M,Y) eingeben!");
document.getElementById(namevar).style.backgroundColor = 'red';
document.getElementById(namevar).style.color = 'white';
}
else {
datum = sVD[0] + "." + sVD[1] + "." + sVD[2];
document.getElementById(namevar).style.backgroundColor = 'white';
document.getElementById(namevar).style.color = 'black';
}
}
else {
window.alert("Die Zeichenkette '" + datum + "' kann nicht konvertiert werden! Bitte im Format (DD.MM.YYYY) oder (DD,MM,YYYY) oder (D.M.YY) oder (D,M,Y) eingeben!");
document.getElementById(namevar).style.backgroundColor = 'red';
document.getElementById(namevar).style.color = 'white';
}
}//if
document.getElementById(namevar).value = datum;
}
</script>
</head>
<body>
<form method="post" action="">
<input type="text" name="textfield" id="textfield" onchange="checkDate(this, 'textfield');"/>
</form>
</body>
</html>
Kann es mal bitte jemand von euch testen und mir sagen, wieso sich das Script nicht ausführen lässt. Wenn ich Teile davon teste funktioniert es einwandfrei.
Was es können soll ist folgendes:
- Bei der Eingabe eines Datums soll möglich sein, dass man das Datum auch per Komma eintragen kann,
- dass die Kommas durch Punkte ersetzt werden,
- dass das Datum auf Gültigkeit validiert wird.
- dass kein Datum in der Zukunft liegen kann.
- dass
Testdatensätze sind zum Beispiel:
(1) 1,1,09 = 01.01.1909
(2) 31,12,08 = 31.12.2008
(3) 32,12,3 = ungültig
(4) 24,08,78 = 24.08.1978
(5) 13.05.77 = 13.05.2077
(5) 00.01.76 = ungültig
Hoffe es weiß jemand von euch weiter.
@edit:
Ich hab das mit den Klammern jetzt verbessert. Allerdings gibt es immer noch ein Problem mit den Werten 8 und 9 bei den Wochen, Monaten und Jahren.
... Jemand noch ne Idee
Zuletzt bearbeitet: