2009-08-09 11 views
0

Ich muss ein Textfeld mit einem berechneten Datum ausfüllen und kann den berechneten Wert nicht angezeigt werden. z.B. Das Textfeld sollte standardmäßig auf das heutige Datum + 5 Tage eingestellt sein. Ich habe Java-Skript die Berechnungen zu tun, und sie arbeiten, und ich weiß, dass ich das Attribut "Wert" für das Textfeld verwenden, aber bin mir nicht sicher über die Syntax zu analysieren das Java-Skript var auf das Attribut Wert.Vorfüllen eines Formular-Standardwert mit einem berechneten Wert

var currentTime = new Date() 
var day = currentTime.getDate() +5 
var year = currentTime.getFullYear() 
var month = currentTime.getMonth() + 1; 
var calcdate = day + "/" + month + "/" + year; 

<input type="text" name="T1" size="20" id="sub_date" value="<document.write(subdate)"> 

Antwort

3

würde ich wahrscheinlich, indem sie Ihre calcdate (und die damit verbundenen Variablen) und das Festhalten, dass in einer Start-Funktion:

function calculate_date() { 
    currentTime = new Date(); 
    day   = currentTime.getDate() + 5; 
    year  = currentTime.getFullYear(); 
    month  = currentTime.getMonth() + 1; 
    calcdate = day + "/" + month + "/" + year; 
    return calcdate; 
} 

wir eine weitere einrichten können kleine Funktion, die das Datum tatsächlich in das gewünschte Element einfügt:

function prepopulate_date() { 
    document.getElementById("sub_date").setAttribute('value', calculate_date()); 
} 

Das obige macht das gleiche wie das, was Sie früher machen wollten, aber auf eine etwas sauberere Art und Weise.

Schließlich müssen wir diese Funktion tatsächlich aufrufen. Bis jetzt haben wir nur die Funktionen eingerichtet, die die Arbeit für uns erledigen, wir haben ihnen nicht gesagt, dass sie laufen sollen. Darüber hinaus müssen wir sicherstellen, dass das Element tatsächlich "existiert", bevor wir etwas darin einfügen. Ein häufiges Problem, wenn Sie dies nicht beim Laden oder 'Bereit' -Ereignis tun (ein Ereignis, das Sie, soweit ich weiß, nur bei Verwendung von externen Javascript-Bibliotheken erhalten), ist, dass Sie versuchen, einen Wert in einen einzufügen Element, das noch nicht existiert, weil der Browser nicht die Zeit hatte, den gesamten HTML-Inhalt der Seite zu laden. So können wir etwas tun, wie folgt:

window.onload = prepopulate_date; 

Wenn Sie möchten, können Sie eine example herunterladen.

Ich hoffe, das hilft. Prost.

+0

Awesome funktioniert wie ein Leckerbissen. Vielen Dank für die Lösung, aber die ausgezeichnete Erklärung. Prost, Dave –

2
document.getElementById('sub_date').value(calcdate); 

oder so ähnlich

Verwandte Themen