J'ai un problème avec mon formulaire, j'aimerais qu'il calcul la totalité des quantités mais malheureusement il calcul seulement la première ligne lorsque l'utilisateur la change, les autres lignes sont ignorées. voici mon script
<SCRIPT language="javascript" >
function calcul(){
var mardi = 0 + Number(document.getElementById("mid[]").value);
var jeudi = 0 + Number(document.getElementById("jid[]").value);
var total = Number(mardi + jeudi);
document.getElementById("total").value = total;
}
</SCRIPT>
voici un peu plus loin mes inputs provenant d'une requête sql (une boucle)
Si tu as plusieur lignes et que la page affiche donc plusieurs possibilité d'Input pour mardi et jeudi tu ne dois pas utiliser le document.getElementById mais plutôt le document.getElementsByName car celui ci va te retourner un tableau (Array) d'objets ayant "mardipopote" ou "mardipopote".
Exemple que j'ai piqué du Web parce que je suis paresseux :
<FORM name="form_fruit">
<INPUT type="checkbox" name="fruit" value="Fraise"> Fraise <BR>
<INPUT type="checkbox" name="fruit" value="Banane"> Banane <BR>
<INPUT type="checkbox" name="fruit" value="Pomme"> Pomme <BR>
</FORM>
<SCRIPT language=javascript>
document.getElementsByName("fruit")[0].checked = true;
document.getElementsByName("fruit")[1].checked = true;
document.getElementsByName("fruit")[2].checked = true;
</script>
NOTE : n'utilise pas des noms d'objet comme "mardipopote[]" avec les [] à la fin car tu vas en arracher... Prends juste "mardipopote" comme nom.
A+
jf
Ajout du 16-10-2007 à 17:38:
Je vais être gentils:
Si tu ne connaîs pas le nombre d'occurence de l'élément "mardi" voici comment l'obtenir :
var myMardiArray=document.getElementsByName("mardipopote");
alert("le nombre d'occurence est : " + myMardiArray.length);
ok merci beaucoup je vais essayer ça immédiatement et je te reviens là-dessus.
à propos, les [] c'était pour faciliter mon $_POST["mardipopote[]"] sur la page de sortie de facture, le POST allait chercher toutes les données des mardipopote.
donc c'est du PHP. De ce coté là je ne peut pas t'aider. En js je m'y connais, ASP, Java et C mais en PHP j'ai jamais vraiment regardé.
Tu peux essayer de garder le nom avec les "[]" mais je ne sais pas comment le Javascript va interpréter qq chose comme :
document.getElementsByName("mardipopote[]")[0].value;
À première vue ça devrais fonctionner. C'est que je trouvais ça bizare
A+
jf
[ Ce message a été modifié par : : jft99 le 16-10-2007 19:53 ]
en conservant les [] ça semble fonctionner, l'alerte me dit que mon nombre d'occurence est 4, ce qui est exact.
donc je me suis servi de cette information pour la passer en boucle, mais pour la suite je fais comment, chu vraiment un gros 0 en JAVASCRIPT. Voilà à quoi ça ressemble mon code qui ne calcul plus rien maintenant :)
<SCRIPT language="javascript" >
function calcul(){
var myMardiArray=document.getElementsByName("mardipopote[]");
var myJeudiArray=document.getElementsByName("jeudipopote[]");
for (var i =0; i < myMardiArray.lenght, i++) {
var mardi=myMardiArray.value;
var mardi=myJeudiArray.value;
}
var total = 0 + Number(mardi + jeudi);
document.getElementById("total").value = total.toFixed(2);
}
</SCRIPT>
AUTRE CHOSE
lorsque j'Essais ceci
var myMardiArray=document.getElementsByName("mardipopote[]");
alert("le nombre d'occurence est : " + myMardiArray[2].value);
il me sort la donnée correspondante au bon array... mais lorsque j'essais ceci
for (var i =0; i < myMardiArray.lenght, i++) {
var mardi += myMardiArray[i].value;
}
ça ne fonctionne pas!! je croyais vraiment que je l'avais!!!
[ Ce message a été modifié par : : Foo le 16-10-2007 20:23 ]
Je ne testerai pas mais ça va être qq chose comme :
<SCRIPT language="javascript" >
function calcul(){
var myMardiArray=document.getElementsByName("mardipopote[]");
var myJeudiArray=document.getElementsByName("jeudipopote[]");
// ici tu déclare tes variable car tu ne peux les déclarer qu'une fois
var TotalMardi = 0;
var TotalJeudi = 0;
for (var i =0; i < myMardiArray.lenght, i++) {
TotalMardi = TotalMardi + myMardiArray[i].value;
TotalJeudi = TotalJeudi + myJeudiArray[i].value;
}
var total = TotalMardi + TotalJeudi ;
document.getElementById("total").value = total.toFixed(2);
}
</SCRIPT>
A+
jf
[ Ce message a été modifié par : : jft99 le 16-10-2007 20:20 ]
je vais continuer a gosser dessus, ça me sort encore des erreurs, je croyais vraiment que ça yétait... pourtant il me sort toujours la bonne valeur en alert lorsque je demande un array en particulier.
non ce n'est pas le problème. ma boucle php part de 0, donc les deux concordes, lorsque je demande le array 2 il me sort la 3ème ligne ce qui est correct... il y a quelque chose qui ne fonctionne pas dans la boucle mais je ne sais pas quoi... avec un alert ça me sort les bonnes données c bizare
Ajout du 17-10-2007 à 06:16:
Ok j'ai résolu le problème:
<SCRIPT language="javascript" >
function calcul(){
var myMardiArray=document.getElementsByName("mardipopote[]");
var myJeudiArray=document.getElementsByName("jeudipopote[]");
// ici tu déclare tes variable car tu ne peux les déclarer qu'une fois
var TotalMardi = 0;
var TotalJeudi = 0;
for (var i =0; i < (myJeudiArray.length); i++) {
TotalMardi = (TotalMardi * 1) + (myMardiArray[i].value * 1);
TotalJeudi = (TotalJeudi * 1) + (myJeudiArray[i].value * 1);
}
var somme = TotalMardi + TotalJeudi ;
var total = somme*5.5;
document.getElementById("somme").value = somme;
document.getElementById("total").value = total.toFixed(2);
}
</SCRIPT>
quelques erreurs de syntaxes dans la boucle, un gros merci pour le coup de pouce, c'est très apprécié.
Sauf mention contraire, le contenu du blog et du forum est sous licence Creative Commons By-Sa. Vous avez le droit de le reproduire à condition de citer l'auteur, de faire un lien vers la page d'origine, et de partager vos travaux dérivés selon les mêmes conditions.