Wochtag aus Datum resultieren
Ann
- javascript
0 Andreas-Lindig0 Ann0 Andreas-Lindig0 Ann0 Axel Richter
Hallöchen,
hab da mal eine Frage.
Ich hab da ein Javascript, wo sich aus der Eingabe des Datums der Wochtag ergibt.
Dabei gab es für das Datum aber drei Felder (Tag, Monat, Jahr), nun habe ich nur ein Feld für das Datum und möchte wissen, ob Javascript trotzdem dieses Feld so interpretieren kann, dass es den Wochtag errechnet.
Ich danke euch für die Hilfe!
Ann
Hier mal die Funktionen:
function SagDat(tag,mon,jah)
{ if (document.thueForm.tag.value == "" || document.thueForm.mon.value == "" || document.thueForm.jah.value == "")
{ alert("Bitte überprüfen Sie ihre Eingabe.");
if (document.thueForm.tag.value == "")
{ document.thueForm.tag.select();
document.thueForm.tag.focus();
return false;
}
if (document.thueForm.mon.value == "")
{ document.thueForm.mon.select();
document.thueForm.mon.focus();
return false;
}
if (document.thueForm.jah.value == "")
{ document.thueForm.jah.select();
document.thueForm.jah.focus();
return false;
}
}
if ((tag != '') && (mon != '') && (jah != ''))
{ var Jetzt = new Date(jah,mon-1,tag);
var ReturnValue ='';
if (isNaN(Jetzt))
{ alert('Bitte geben Sie ein gültiges Datum ein.');
document.thueForm.tag.select();
document.thueForm.tag.focus();
}
else
{ var Tag = Jetzt.getDate();
var Monat = Jetzt.getMonth() + 1;
var Jahr = Jetzt.getFullYear();
if (Jahr<999)
{ Jahr=Jahr+1900;
}
document.thueForm.tag.value = Tag ;
document.thueForm.mon.value = Monat ;
document.thueForm.jah.value = Jahr ;
SagTag(Tag,Monat,Jahr);
}
}
}
function SagTag(tag,mon,jah)
{ var jetzt = new Date(jah,mon-1,tag);
var WochenTag = new Array ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
document.thueForm.wochentag.value = WochenTag[jetzt.getDay()];
}
hi,
Dabei gab es für das Datum aber drei Felder (Tag, Monat, Jahr), nun habe ich nur ein Feld für das Datum und möchte wissen, ob Javascript trotzdem dieses Feld so interpretieren kann, dass es den Wochtag errechnet.
function SagDat(tag,mon,jah)
das kommt doch darauf an, wie Du die Daten an die Funktion übergibst. Wenn sie bisher funktioniert hat, sollte sie es auch in Zukunft tun. Nur: hier übergibst Du 3 Parameter (wahrscheinlich aus den ursprünglichen 3 Feldern). In Zukunft mußt Du ihr entweder einen übergeben und diesen mit parameter.split('.') am Trennzeichen (hier ein Punkt) in die gewünschten 3 Variablen aufteilen oder eine Funktion vorschalte, die die Aufteilung übernimmt und aus dieser heraus die Funktion SagDat(par1, par2, par3) aufrufen.
Das scheint mir JavaScript-Grundlage - hast Du diese Funktion überhaupt selbst geschrieben? ,-)
Gruß, Andreas
Hi
das kommt doch darauf an, wie Du die Daten an die Funktion übergibst. Wenn sie bisher funktioniert hat, sollte sie es auch in Zukunft tun. Nur: hier übergibst Du 3 Parameter (wahrscheinlich aus den ursprünglichen 3 Feldern). In Zukunft mußt Du ihr entweder einen übergeben und diesen mit parameter.split('.') am Trennzeichen (hier ein Punkt) in die gewünschten 3 Variablen aufteilen oder eine Funktion vorschalte, die die Aufteilung übernimmt und aus dieser heraus die Funktion SagDat(par1, par2, par3) aufrufen.
Davon hab ich schon mal was gehört, hat jemand mal einen Tip, wo ich das finde bzw. wie das gemacht wird?
Das scheint mir JavaScript-Grundlage - hast Du diese Funktion überhaupt selbst geschrieben? ,-)
Hab nie gesagt, dass ich alles selbst geschrieben habe. Sie ist teils von mir.
Als ich die benötigte hatte ich gerade mit Javascript angefangen und jetzt bin ich über die Anfänge hinaus. :-)
Da fällt mir noch was ein, kann ich eine Funktion über das Feld legen, so dass ich beim Eintippen die Punkte nicht mehr setzten muss???
Danke für eure Hilfe,
Johanna
...SagDat(par1, par2, par3) aufrufen.
Davon hab ich schon mal was gehört, hat jemand mal einen Tip, wo ich das finde bzw. wie das gemacht wird?
ja, SelfHTML lesen
Hab nie gesagt, dass ich alles selbst geschrieben habe.
muss man ja auch nicht, aber wenn man den 'Leihcode' nicht durchschaut ist das mit dem Helfen etwas schwierig, würde nämlich im Ernstfall darauf hinauslaufen, daß jemand Dir den Kram komplett schreibt.
Da fällt mir noch was ein, kann ich eine Funktion über das Feld legen, so dass ich beim Eintippen die Punkte nicht mehr setzten muss???
schein mir schwierig - ein 'onChange'-Ereignis wird ja erst ausgelöst, wenn man das Feld wieder verlassen hat. Um also zu ermitteln, ob ein Zeichen getippt wurde (...und nach zwei oder vier Zeichen wird die Funktion 'Punkt()' aufgerufen...) mußt Du die Tastatur abfragen. Ob das auch geht, währen man in ein Feld schreibt, weiß ich gar nicht.
Außerdem: Ich finde solche automatischen Ergänzungen a la Micro$oft ziemlich lästig - lass es lieber. Ich glaube, Deine erste Lösung (drei Felder) war am besten. Da mußt Du auch am wenigsten Fehlerkontrolle machen.
Gruß, Andreas
...SagDat(par1, par2, par3) aufrufen.
Davon hab ich schon mal was gehört, hat jemand mal einen Tip, wo ich das finde bzw. wie das gemacht wird?
ja, SelfHTML lesen
Danke :-)
Hab nie gesagt, dass ich alles selbst geschrieben habe.
muss man ja auch nicht, aber wenn man den 'Leihcode' nicht durchschaut ist das mit dem Helfen etwas schwierig, würde nämlich im Ernstfall darauf hinauslaufen, daß jemand Dir den Kram komplett schreibt.
Och ich hätte da kein Problem damit. .-)
Da fällt mir noch was ein, kann ich eine Funktion über das Feld legen, so dass ich beim Eintippen die Punkte nicht mehr setzten muss???
schein mir schwierig - ein 'onChange'-Ereignis wird ja erst ausgelöst, wenn man das Feld wieder verlassen hat. Um also zu ermitteln, ob ein Zeichen getippt wurde (...und nach zwei oder vier Zeichen wird die Funktion 'Punkt()' aufgerufen...) mußt Du die Tastatur abfragen. Ob das auch geht, währen man in ein Feld schreibt, weiß ich gar nicht.
das fällt ja dann weg, wenn ich drei Felder nehme
Außerdem: Ich finde solche automatischen Ergänzungen a la Micro$oft ziemlich lästig - lass es lieber.
das dumme ist nur, dass die das hier gerne haben wollen, weil das mit dem punkt schreiben, bei 5000 und mehr datensätzen etwas lästig ist.
Ich glaube, Deine erste Lösung (drei Felder) war am besten. Da mußt Du auch am wenigsten Fehlerkontrolle machen.
mhm glaube ich auch
Danke
Ann
Hallo,
das dumme ist nur, dass die das hier gerne haben wollen, weil das mit dem punkt schreiben, bei 5000 und mehr datensätzen etwas lästig ist.
Ich glaube, Deine erste Lösung (drei Felder) war am besten. Da mußt Du auch am wenigsten Fehlerkontrolle machen.
mhm glaube ich auch
<html>
<head>
<title></title>
</head>
<body >
<form name="myform">
<input type="Text" name="tag" value="" size="2" maxlength="2" onkeyup="if(this.value.length==2) this.form.monat.focus();">.
<input type="Text" name="monat" value="" size="2" maxlength="2" onkeyup="if(this.value.length==2) this.form.jahr.focus();">.
<input type="Text" name="jahr" value="" size="4" maxlength="4" onkeyup="if(this.value.length==4) alert('fertig');">
</form>
</body>
</html>
Eine Datumseingabe mit automatischer Weiterschaltung. Bitteschön!
Gruß
Axel
Hallo,
<html>
<head>
<title></title>
</head>
<body >
<form name="myform">
<input type="Text" name="tag" value="" size="2" maxlength="2" onkeyup="if(this.value.length==2) this.form.monat.focus();">.
<input type="Text" name="monat" value="" size="2" maxlength="2" onkeyup="if(this.value.length==2) this.form.jahr.focus();">.
<input type="Text" name="jahr" value="" size="4" maxlength="4" onkeyup="if(this.value.length==4) alert('fertig');">
</form>
</body>
</html>Eine Datumseingabe mit automatischer Weiterschaltung. Bitteschön!
Ja weiß jetzt gar nicht, was ich sagen soll.
Aber am besten :Danke!
Was?
Gruss,
Ann
Hallo,
hab da aber jetzt ein kleines Problem.
Wennich dies anwende, dann führt er meine funktion unter onBlur nicht mehr aus und die benötige ich, um zu überrüfen, ob das datum gültig ist.
Hast da jemand noch einen tip für mich?
thx
Ann
Und noch was....
kann ich die Daten aus allen drei Feldern in ein Feld in der Datenbank speichern??????
Danke.
Ann
Hallo Ann,
<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function weiter(TMJ) {
if (TMJ == "T") {
if (document.myform.tag.value.length == 2) {
document.myform.monat.focus();
}
} else if (TMJ == "M") {
if (document.myform.monat.value.length == 2) {
document.myform.jahr.focus();
}
} else if (TMJ == "J") {
if (document.myform.jahr.value.length == 4) {
dattest();
}
}
}
function dattest() {
var T = parseInt(document.myform.tag.value,10);
var M = parseInt(document.myform.monat.value,10);
var J = parseInt(document.myform.jahr.value,10);
if (T > 1 && T < 32 && M > 1 && M < 13 && J > 1900 && J < 2100) {
var datum = J + "/" + M + "/" + T;
alert ("Datum für Datenbank: " + datum);
} else {
alert("falsche Datumseingabe");
document.myform.tag.value="";
document.myform.monat.value="";
document.myform.jahr.value="";
document.myform.tag.focus();
}
}
//-->
</script>
<noscript></noscript>
</head>
<body >
<form name="myform">
<input type="Text" name="tag" value="" size="2" maxlength="2" onkeyup="weiter('T');">.
<input type="Text" name="monat" value="" size="2" maxlength="2" onkeyup="weiter('M');">.
<input type="Text" name="jahr" value="" size="4" maxlength="4" onkeyup="weiter('J');">
</form>
</body>
</html>
Hinweise:
Wenn Du mit einer Datenbank arbeitest, hast Du doch sicherlich eine serverseitige Scriptsprache (PHP, Perl, ASP) zur Verfügung. Dann sollte die Datums-Prüfung dort erfolgen. JavaScript ist dafür zu unsicher. Der Nutzer könnte es abgeschaltet haben.
Das Datum für die Datenbank muss dann auch dort aus T, M und J zu einem String zusammengebaut werden.
Gruß
Axel