Uwe: Formulareingabe überprüfen

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?

  1. Hi,

    das funktioniert leider nicht.

    "funktioniert nicht" funktioniert nicht. Fehlerbeschreibung, bitte.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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 =:-)

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