# JS Datum in Input-Feld ausgeben



## CookIe21 (16. April 2007)

Halli Hallo,

ich habe ein kl. Problem. Und zwar möchte ich dass das aktuelle Datum (- 30 Jahre + 1 Monat) in einem Input-Feld ausgegeben wird. Ich habe es voll "Ig" versucht zu lösen. Allerdings bin ich nur so weit gekommen, dass das Ding in 'nem Popup ausgegeben wird, wenn man das Feld verlässt.

*Siehe JS-Code:*

```
function input_date(){
  var Heute   = new Date();
  var Tage = Heute.getDate();
  var Monate = Heute.getMonth()+1;
  var Jahre = Heute.getFullYear()-30;
  alert( Tage + "." + "0" + Monate + "." + Jahre );
}
```

*Und so schaut mein Input-Feld aus:*

```
<input type="text" name="datum" onblur="input_date();">
```

Wie löse ich das Problem am besten?
mit *value="javascript:input_date();"* habe ich es schon probIert .. will leider nicht. 

Bitte helft mir .. vielen Dank im Voraus!


MfG.
CookIe


----------



## Sven Mintel (16. April 2007)

Du hast es schon fast gehabt 

```
<input type="text" name="datum" onblur="this.value=input_date()">
<script type="text/javascript">
<!--
function input_date(){
  var Heute   = new Date();
  var Tage = Heute.getDate();
  var Monate = Heute.getMonth()+1;
  var Jahre = Heute.getFullYear()-30;
  return( Tage + "." + "0" + Monate + "." + Jahre );
}
//-->
</script>
```


----------



## CookIe21 (17. April 2007)

Ah .. sehr schön, funktioniert auch soweit ganz gut. Allerdings soll der Text immer da stehen, nicht nur nachdem man das Feld angeklickt und danach weggeklickt hat.

*So geht's leider nicht:*

```
<input type="text" name="datum" value="this.value=input_date()">
```

Das noch .. dann hab ich glaub ich alles! 
Vielen vielen Dank!


----------



## Thomas D (17. April 2007)

CookIe21 hat gesagt.:


> Allerdings soll der Text immer da stehen, nicht nur nachdem man das Feld angeklickt und danach weggeklickt hat.



Wie soll das denn gehen? Du müsstest bei jedem Buchstabenchange überprüfen, ob schon ein richtiges Datum eingegeben wurde, dann noch einen Offset freilassen für schneller Änderung und dann das Feld ändern. Ob sich das auszahlen wird ;sprich: ohne onBlur wird es nicht gehen ...


----------



## CookIe21 (17. April 2007)

Also zur Zeit steht "TT.MM.JJJJ" drin. Sobald man das Feld anklickt verschwindet dieses TT.MM.JJJJ und man kann selber was eintippen. Nunja .. statt dem TT.MM.JJJJ will ich einfach das aktuelle Datum haben.


----------



## Thomas D (17. April 2007)

Wenn ich es richtig verstanden habe, musst du nur folgendes schreiben:


```
<script type="text/javascript>
    function loadDate ()
    {
        var datum = new Date ();
        document.getElementById('datum').value = datum.getDate() +"." +(datum.getMonth() + 1) +"." +(datum.getFullYear() - 30);
    }
</script>

<body onload="javascript: loadDate ();">
    <input type="text" id="datum" />
</body>
```


----------



## CookIe21 (17. April 2007)

Joa .. funktioniert soweit, super .. besten Dank! 
Das Datum geht allerdings nicht weg, wenn ich das Feld anklick'. 

*Code schaut wie folgt aus:*

```
<input type="text" name="DATUM" maxlength="10" class="Eingabe180" tabindex="8" style="width:174px;" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="PruefeGeb(this.value);" />
```


----------



## Thomas D (17. April 2007)

Wieso benötigst du denn das If im onFocus? Wann soll die Änderung erfolgen und was ist bitte eigentlich überhaupt der DefaultValue (dieser bleibt ja undefiniert) ?


----------



## Sven Mintel (17. April 2007)

Ändere es mal dahingehend:

```
<script type="text/javascript">
    function loadDate ()
    {
        var datum = new Date ();
        document.getElementById('DATUM').defaultValue = 
        document.getElementById('DATUM').value = 
        datum.getDate() +"." +(datum.getMonth() + 1) +"." +(datum.getFullYear() - 30);
    }
</script>
```
*defaultValue* ist eine vordefinierte Eigenschaft von Formularfeldern welche Auskunft gibt über ihr ursprüngliches value-Attribut.
Da dies in jedem Fall jedoch leer ist(im <input> ist kein value notiert), schlägt der Vergleich fehl.
Durch die Änderung wird zusätzlich der Wert von defaultValue geändert.

Übrigens:wenn das Ganze nicht nur im IE funktionieren soll, musst du dem Input die *ID*  "DATUM" geben...eine ID ist nicht dasselbe wie "name".


----------

