Marc Schumann: Variable scriptuebergreifend einsetzen

Beitrag lesen

Guten Tag allerseits,

Ich habe mir Testweise ein Script geschrieben, dass von einem HTML-Formular aufgrufen wird, und dort als Vorgabe in ein INPUT Feld einen Wert mit document...value vorgibt.( Ich habe die beiden Dateien im Text weiter unten komlett miteingefügt, da sie nicht besonders groß sind, aber verdeutlichen was ich will).

Das Script funktioniert.

Aber ich will dieses Script, bzw. die Funktion verallgemeinern, so dass der Wert immer dem Inputfeld zuzgewiesen wird, von dem es aufgerufen wird.Momentan muss ich ja immer explizit das Feld mit
document.test.Datum.value = heutigesDatum; angeben. Wird aber die Funktion von eiem evt. zweiten oder dritten Feld aus augerufen müsste ich jedesmal
document.test.(Feld).value in mein Script einfügen.Ich habe schon versucht den Namen des Feldes zu übergeben, um dann mit (Siehe Kommentar im Script ganz unten ) den Namen des Feldes als Variable anzusprechen, aber das geht scheinbar nicht.

Hat irgendwer Abhilfe oder einen Tipp zum Workaround.

Ich muss noch dazu sagen, dass ich neu in Javascript bin, aber ich habe noch keine Lösung in irgendwelchen Docus gesehen.

Formular.html

<html><head><title>Formular</title>
<script src="datum.js" type="text/javascript">
</script>
</head>
<body>
 <div>Auf dieser Seite findest du 3 Eingabefelder.</div>
 <p>Das Erste und das Letzte sind unerheblich.
 Im Prinzip soll es so funktionieren, daß sobald man in das zweite Feld geht, wird das Tagesdatum
 als Vorgabewert eingetragen.
  Dieser Wert soll überschreibbar sein, und beim Verlassen wird der neue Wert geprüft.
 Bei einer positiven Prüfung passiert nichts, bei einer negativen, erscheint ein Fenster</p>
 <form name="test" action="">
 <input type="text" name="Eingabe" size="10" /><br />
 <input type="text" name="Datum" size="10"
 onFocus="heutigesDatum(this.name)"
 onBlur="PruefeDatum(this.value,1600,2400)" /><br />
 <input type="text" name="nochneEingabe" size="10" /><br />
 </form>
</body>
</html>

datum.js

<!--
function PruefeDatum(Datum,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge, tageMonat;
Laenge=Datum.length;

if (Laenge==10 && Datum.substring(4,5)=="-" && Datum.substring(7,8)=="-")
{
Tag=parseInt(Datum.substring(8,10),10);
Monat=parseInt(Datum.substring(5,7),10);
Jahr=parseInt(Datum.substring(0,4),10);
}
else
{
Fehlermeldung();return false;
}

if (Monat==4 || Monat==6 || Monat==9 || Monat==11)
{
tageMonat=30;
}
else if (Monat==1 || Monat==3 || Monat==5 || Monat==7 || Monat==8 || Monat==10 || Monat==12)
{
tageMonat=31;
}
else if(Monat==2 && Jahr%4==0 && Jahr%100!=0 || Jahr%400==0)
{
tageMonat=29;
}
else if(Monat==2 && Jahr%4!=0 || Jahr%100==0 && Jahr%400!=0)
{
tageMonat=28;
}

if (Tag>=1 && Tag<=tageMonat && Monat>=1 && Monat<=12 && Jahr>=Startjahr && Jahr<=Endjahr)
{
return true;
}
else
{
Fehlermeldung();return false;
}
}

function Fehlermeldung()
{
alert("Kein gueltiges Datum!\nBitte Datum in der Form: JJJJ-MM-TT eingeben!");
document.Formular.Datum.focus();
}

function heutigesDatum(Feldname)
{
var heute = new Date();
var heuteTag = heute.getDate();
var heuteMonat = heute.getMonth()+1;
var heuteMonatString=heuteMonat.toString();
var monatlaenge
    monatlaenge = heuteMonatString.length;
 if (monatlaenge==1 )
 {
 heuteMonatString=("0"+ heuteMonatString);
 }
var heuteTagString=heuteTag.toString();
var tageslaenge
    tageslaenge = heuteTagString.length;
 if (tageslaenge==1 )
 {
 heuteTagString=("0"+ heuteTagString);
 }
var heuteJahr = heute.getFullYear();
 heuteJahr = heuteJahr.toString();
var heutigesDatum = (heuteJahr + "-"+ heuteMonatString + "-" + heuteTagString);
var Feldname = Feldname;
document.test.Datum.value = heutigesDatum;

/*document.test.Feldname.value = heutigesDatum;*/

}
-->