Logikabfrage eines Eingabefeldes mittels RegExp und replace

awnetti

Mitglied
Hallo zusammen,

bräuchte eure Hilfe für eine logische Datum-Abfrage eines Eingabefeldes. Bin im Javascript nicht sehr fit und komme alleine nicht weiter.

Habe für ein Datum-Eingabefeld folgende Funktion gefunden, die bei onKeyUp prüft und alles ersetzt, das nicht . / - oder eine Zahl ist.

Code:
<script language="JavaScript">
function checkDatum(el) {
  var val = el.value.replace(/[^\.\/\-\d]/g, '');
  el.value = val;
}
</script>

HTML:
<form>
 <input value="" type="text" maxlength="10" onKeyUp="checkDatum(this);" />
</form>

Möchte das Script nun so umschreiben, das es das Eingabefeld nach einem logischen Format des Datum prüft und löscht, wenn es nicht stimmt.

Die Eingabe soll in folgendenden Formaten zulässig sein:
01.08.2012 oder 01-08-2012 oder 01/08/2012

Außerdem dürfen die Zahlen für TAG nicht größer sein als 01 bis 31,
dann ein . oder - oder / ,
dann der MONAT, nicht größer als 01 bis 12,
dann wieder ein . oder - oder / ,
und dann das JAHR, das mit 20 beginnen muss, was darauf folgt muss größer sein als 07.

Weiß nicht so recht wie ich das angehen soll, weil ich vor allem die verschiedenen Klammerkombinationen () oder [], die ich scheinbar bentzen kann, nicht so recht verstehe.

Kann ich die einzelnen Zahlenpakete für TAG MONAT und JAHR mit einer Abfrage wie 01-31 lösen oder muss ich sagen, "wenn nicht 01 oder 02 oder 03 ..... oder 31" dann löschen?

Ich hoffe jemand kann mir einen Tipp, einen Denkanstoß geben wie ich weiterkommen?

Vielen Dank!
 
Moin,

erstmal prinzipiell....das mit dem onkeyup und dem Löschen wird so nicht funktionieren :(
Weil onkeyup feuert jedesmal, wenn man etwas eingibt, und bereits das erste eingegebene Zeichen würde entfernt werden, weil es dem Suchmuster nicht entspricht...ergo: man könnte überhaupt nichts eingeben.

Du müsstest also zu einem anderen Zeitpunkt die Eingaben prüfen...denkbar wäre bspw. vor dem Senden des Formulars im Fehlerfall eine Meldung auszugeben und das Senden anzubrechen.
 
Okay danke, das hab ich nicht bedacht. Das läßt sich doch aber beim Auslösen eines Formular-Buttons machen!

Bloß zurück zu der eigenltichen Abfrage, geht so eine "logische" Abfrage überhaupt?
 
Mit RegExp alleine wird das nicht gehen, da man dafür Referenzen innerhalb des Ausdrucks benötigt, was in JS nicht verfügbar ist :(
Die einzelnen Teile(Separatoren, Ziffern), müssten alle einzeln für sich geprüft werden, zuerst auf erlaubte Zeichen...und die Ziffern dann noch auf ein gültiges Datum(>=2007, Monatstage, beim Februar dann noch Schaltjahr)
 
Ich habe ja nicht gesagt, dass es nicht mit JS alleine geht...es geht nur nicht mit RegExp alleine.

Hier bspw. findest du eine Funktion welche ein Datum auf Gültigkeit prüft...die müsste man nur ein wenig erweitern auf deine Bedürfnisse.
 
Zurück