Coder Board Community (http://www.coder-board.de/index.php)
- Coding (http://www.coder-board.de/b4_Coding.html)
-- Java Script (http://www.coder-board.de/b65_Java-Script.html)
--- Datumsfeld nach Eingabe prüfen und bei Fehler sofort warnung ausgeben. (http://www.coder-board.de/t2770_Datumsfeld-nach-Eingabe-pruefen-und-bei-Fehler-sofort-warnung-ausgeben.html)


Geschrieben von Prometheus am 25.08.2008 um 13:38:

  Datumsfeld nach Eingabe prüfen und bei Fehler sofort warnung ausgeben.

Ich suche eine Möglichkeit ein Feld in einem Formular für ein Datum sofort wenn das Datum eingegeben wurde und zum nächsten Feld gesprungen wird zu prüfen und ggf. eine Warnung auszugeben.

Als Beispiel gibt der Nutzer den 32.13.2020 ein. Nun soll die Prüfung automatisch feststellen, dass es den 13ten Monat nicht gibt, es in dem angegebenen Monat keinen 32ten gibt und das wir das Jahr 2020 noch gar nicht haben. Es darf also kein Tag angegeben sein den es nicht gibt, kein Monat den es nicht gibt und kein Datum das in der Zukunft liegt.

Ich habe keine Idee wie ich das machen soll da ich ja berücksichtigen muss wenn ein Schaltjahr ist und all sowas.

Vielleicht gibt es sowas in der Richtung ja sogar als fertiges Skript irgendwo. Ich hab selbst schon mal gesucht aber konnte nichts passendes finden.



Geschrieben von imset am 28.08.2008 um 01:40:

 

Naja hört sich eigentlich nicht sonderlich schwierig an.

Du brauchst die Variable des eingegeben Datums, die wird aufgeteilt anhand von Tag Monat Jahr. Jetz musst nur noch je nach dem was du halt überprüfen willst mit ein paar if Bedingungen arbeiten und je nach Fall eine alert box ausgeben lassen.

Zu guter Letz in an deim Eingabefeld deine check-funktion mit onchange() platzieren, fertig smile



Geschrieben von Prometheus am 28.08.2008 um 08:39:

 

Nun ich habe das Problem inzwischen ein klein wenig anders gelöst. Ich habe ein stück Code gefunden mit dem ich einen Auswahlkalender erhalte. Da ist es nicht möglich ein falsches Datum zu wählen. Und mittels Parametern kann ich sogar genau die Grenzen einfügen die ich gerne hätte, sprich also kein Datum in der Zukunft und maximal drei Monate in der Vergangenheit.

Ansonsten hatte ich mir da aber schon ein Konstrukt an If Abfragen aufgebaut. Hab das leider grade nicht zur Hand. Waren aber ne ganze Menge Abfragen und ich bin nicht mal sicher ob ich jede Eventualität erfasst hatte.



Geschrieben von Artanis am 09.09.2008 um 09:09:

 

Das Board lebt ja noch, durch deine Rundmail wurde ich doch wieder neugierig Augenzwinkern

Hab mal den Vorschlag mit den alerts und den ifs umgesetzt. So könnte eine Funktion zum Testen aussehen, wenn du doch keinen Kalender einbauen willst oder was auch immer. Hab das eben geschrieben aber nur kurz getestet, macht aber einen sicheren Eindruck.

< HTML>
<script>
function datumTest(){
var tage = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var datum = document.getElementById("datum").value.split(".");

if(datum.length != 3)
alert("Falsches Format");

var tag = parseInt(datum[0],10);
var monat = parseInt(datum[1],10)-1; // Monate beginnen bei 0 und enden bei 11
var jahr = parseInt(datum[2],10);
if(jahr % 4 == 0 && jahr % 100 != 0 || jahr % 400 == 0){
tage[1] = 29;
}

if(tag < 1 || tag > tage[monat]){
alert ("Tag ist zu klein oder zu groß");
}else
if(monat < 0 || monat > 11){
alert ("Monat sind zu klein oder zu groß");
}
else if(jahr > 9999 || jahr < 0){
alert ("Jahr ist zu klein oder zu groß");
}
}
</script>
<body>
<input type="text" id="datum">
<input type="button" value="Click me!" onClick="datumTest()">
</body>
</ HTML>

Btw: Vom Thema abweichen.. War vor mehreren Jahren das letzte mal online hier.. Kann ich irgendwie den Usernamen ändern?



Geschrieben von Prometheus am 10.09.2008 um 12:03:

 

Einen ähnlichen Lösungsansatz hatte ich mir schon mal angeschaut aber die Lösung mit dem kleinen Kalender um das Datum auszuwählen ist komfortabler und angenehmer finde ich.

Bezüglich des Usernamen - ich kann das machen wenn Du mir einen Usernamen nennst den Du willst und der noch frei is.


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH