Rouven: Formulareingabe überprüfen

Beitrag lesen

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;
}