2009-08-09 7 views
0

Je dois remplir une zone de texte avec une date calculée et ne peut pas afficher la valeur calculée. par exemple. la zone de texte doit par défaut être la date du jour + 5 jours. J'ai un script Java qui fait les calculs et ils fonctionnent, et je sais que j'utilise l'attribut "value" pour la zone de texte mais je ne suis pas sûr de la syntaxe pour analyser le script var var à l'attribut value.Pré-remplir une valeur par défaut d'un formulaire avec une valeur calculée

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)"> 

Répondre

3

je ne serais probablement commencer par prendre votre calcdate (et variables associées) et coller que dans une fonction:

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

Nous pouvons mettre en place une autre petite fonction qui va effectivement insérer la date dans l'élément désiré:

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

Ce qui précède fait la même chose que ce que vous vouliez faire plus tôt, mais d'une manière légèrement plus propre.

Enfin, nous devons appeler cette fonction. Jusqu'à présent, nous avons seulement mis en place les fonctions pour faire le travail pour nous, nous ne leur avons pas dit de fonctionner. En plus de cela, nous devons nous assurer que l'élément existe réellement avant d'essayer d'y insérer quoi que ce soit. Un problème courant, si vous ne le faites pas sur le load ou l'événement 'ready' (un événement que, pour autant que je sache, vous n'obtenez que lors de l'utilisation de bibliothèques javascript externes), vous essayez d'insérer une valeur dans un élément qui n'existe pas encore car le navigateur n'a pas eu le temps de charger le contenu html entier de la page. Ainsi, nous pouvons faire quelque chose comme suit:

window.onload = prepopulate_date; 

Si vous le souhaitez, vous pouvez télécharger un example.

J'espère que cela aide. À votre santé.

+0

Impressionnant fonctionne comme un régal. Merci beaucoup pour non seulement la solution mais l'excellente explication. Cheers, Dave –

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

ou quelque chose comme ça

Questions connexes