Formulareingabe überprüfen
Uwe
- javascript
0 Cheatah0 norbert =:-)0 Rouven
Ich will ein Formular (Datumsfeld) auf RIchtige (Bsp. 24.04.03) eingabe überprüfen und benutze zur Zeit folgenden COde
function chkFormular()
{
if(document.texte.datum.value == "")
{
alert("Bitte geben Sie eine Datum ein!");
document.texte.datum.focus();
return false;
}
if(document.texte.datum.value.indexOf('##.##.##') == -1) {
alert("Bitte im Format 11.03.03 eingeben");
document.texte.datum.focus();
return false;
}
if(document.texte.ueberschrift.value == "")
{
alert("Bitte geben Sie eine Ueberschrift!");
document.texte.ueberschrift.focus();
return false;
}
}
//-->
das funktioniert leider nicht.
Wie sieht die richtige Lösung aus?
Hi,
das funktioniert leider nicht.
"funktioniert nicht" funktioniert nicht. Fehlerbeschreibung, bitte.
Cheatah
Hallo Uwe!
1.)
alert("Bitte geben Sie eine Datum ein!");
eine Datum? hehe
2.) .indexOf(irgendwas) prüft lediglich, ob die angegebene Zeichenkette sich im String befindet - und ich denke nicht, dass irgendjemand ##.##.## eingibt ;-)
3.) Stattdessen musst du den String in Einzelteil zerlegen und weiter verarbeiten - also zB Testen, ob auf Position 3 und 5 ein Punkt steht (und ob der Rest Zahlen sind, und, und, und):
if (document.texte.datum.value.substr(2,1) == '.') ...
mfg
norbert =:-)
Die hier müsste relativ gut sein, hoffe es sind keine Fehler drin, kann mm/dd/yyyy und dd.mm.yyyy. Akzeptiert sowohl 2 als auch 4 stelliges Jahr
--------------------------------------
function validateDate(date) {
if (date == "") return true;
if (date.length<8 || date.length>10 || ((date.indexOf(".")== -1) && (date.indexOf("/") == -1))) {
return false;
}
var teile=new Array();
// falls / im date dann dort teilen und vertauschen, sonst . und normal
if (date.indexOf("/") > -1) {
teile=date.split("/");
if (teile.length!=3) {
return false;
}
var tmp = teile[0];
teile[0] = teile[1];
teile[1] = tmp;
} else {
teile=date.split(".");
if (teile.length!=3) {
return false ;
}
}
if (isNaN(teile[0])==true || isNaN(teile[1])==true || isNaN(teile[2])==true || teile[0]<1 || teile[0]>31 || teile[1]<1 || teile[1]>12 || teile[2]<1950 || teile[2]>9999 )
{
return false;
}
/* Nur 02, 04, 06, 09 und 11 haben weniger als 31 Tage! */
if (teile[0]=="31") {
if (teile[1]=="2" || teile[1]=="4" || teile[1]=="6" || teile[1]=="9" || teile[1]=="11" || teile[1]=="02" || teile[1]=="04" || teile[1]=="06" || teile[1]=="09") {
return false;
}
}
if (teile[0]=="30" && teile[1]=="2") {
return false;
}
if (teile[0]=="30" && teile[1]=="02") {
return false;
}
/* Die boesen Schaltjahre... */
if (teile[0]=="29" && teile[1]=="2") {
var schaltklein=teile[2]%4;
if (schaltklein!=0) {
return false;
} else {
var schaltmittel=teile[2]%100;
if (schaltmittel==0) {
var schaltgross=teile[2]%400;
if (schaltgross!=0) {
return false;
}
}
}
}
if (teile[0]=="29" && teile[1]=="02") {
var schaltklein=teile[2]%4;
if (schaltklein!=0) {
return false;
} else {
var schaltmittel=teile[2]%100;
if (schaltmittel==0) {
var schaltgross=teile[2]%400;
if (schaltgross!=0) {
return false;
}
}
}
}
return true;
}