piepie
Janvier 17, 2007, 9:19
1
Salut,
J’ai besoin d’aide pour remplir un champ d’un formulaire dynamiquement avec js quand je modifie un autre.
Pour resume, j’ai un champ duree et un champ fin,
Donc je souhaiterai que lorsque je change la duree, la date de fin s’incremente automatiquement !
merci pour votre aide !
voila mon code
…
<body>
<script type="text/javascript" language="JavaScript">
<!–
function addDays (j)
{
debut = new Date();
debut.setTime("<?php mktime(0,0,0,$start_month,$start_day,$start_year) ?>");
fin = new Date(debut + (1000 * 60 * 60 * 24 * j));
document.forms["main"].findynamique.value = fin.getDate();
}
// -->
</SCRIPT>
<?php
echo "<FORM name=\"main\" action=\"test.php\" method=\"get\"><table>";
echo "<TR><TD><b>DUREE</b></td></tr>\n";
echo "<TR><TD><INPUT NAME=\"duree\" type=\"text\" SIZE=\"7\" VALUE=\"".$duration."\" onchange=\"addDays(5);\">";
echo "<TR><TD class=\"E\"><B>FIN</B></TD></TR>\n";
$end_day = time_date_string_jma(mktime(0,0,0,$start_month,$start_day+$duration,$start_year),$dformat);
echo "<TR><TD><INPUT NAME=\"findynamique\" size=\"20\" type=\"text\" value=\"".$end_day."\">\n";
?>
</table>
</form>
RRMX
Janvier 17, 2007, 9:33
2
<script type=‘text/javascript’>
function incrd()
{
from = document.dates.debut.value;
send = parseInt(from)+parseInt(1);
if(from == ‘’){send=’’;}
document.dates.fin.value=send;
}
</script>
<form name=‘dates’ action=’’ method=‘post’>
Début:<br />
<input type=‘text’ name=‘debut’ onkeyup=‘incrd();’/><br />Fin:<br />
<input type=‘text’ name=‘fin’ /><br />
<input type=‘submit’ value=‘Valider’ />
</form>
Voila, ça me semble assez simple.
edit: au fait if(from == ‘’){send=’’;} ça c’est parce que sinon, quand on entre une valeur dans Début et qu’on la supprime ensuite, ça affiche un NaN dans Fin. Avec ça on n’affiche rien
piepie
Janvier 17, 2007, 10:22
3
hi,
merci pour ta reponse,
j’ai teste ton code et cela fonctionne mais le probleme est que cela incremente de 1 le champ fin a partir du champ duree.
mais moi je veux le champ fin affiche la date ! comment faire ?
RRMX
Janvier 17, 2007, 10:28
4
Selon l’unité du début… Si ce sont des jours, minutes, secondes, heures…
piepie
Janvier 17, 2007, 10:57
5
bon apres reflexion plus profonde voici le code qui ce que je veux !
today = new Date();
today.setDate(document.main.elements['day'].options[document.main.elements['day'].selectedIndex].text);
today.setMonth(document.main.month.value - 1);
today.setYear(document.main.elements['year'].options[document.main.elements['year'].selectedIndex].text);
duree = document.main.duration.value;
send = new Date(today.getTime() + (1000 * 60 * 60 * 24 * duree));
send.setHours(23);
send.setMinutes(59);
send.setSeconds(59);
if(duree == ''){send='';}
document.main.findynamique.value=send.toLocaleString();
}
J’ai une question subsidiare !
comment puis-je faire pour ne pas avoir l’heure dans ma variable send ? car actuellement j’ai ce format [quote=""]
mardi 16 janvier 23:59:59
[/quote]
en tous cas merci pour ton aide !
piepie
Janvier 17, 2007, 11:00
6
encore moi !
autre questions subsidiare pas trop en relation mais comment fait on pour ne pas faire apparaitre le code javascript dans la page HTML finale ??
j’ai essaye
<script>
<!–
mon script …
// -->
</script>
mais il reste toujours visible !
piepie:
encore moi !
autre questions subsidiare pas trop en relation mais comment fait on pour ne pas faire apparaitre le code javascript dans la page HTML finale ??
j’ai essaye
<script>
<!–
mon script …
// -->
</script>
mais il reste toujours visible !
Tu peux pas, au mieux tu peux le mettre dans un fichier .js séparé, qui pourra toujours être consulté par les curieux.