Integrer variable javascript dans input text

Fermé
moulesfrites Messages postés 25 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 29 mai 2009 - 27 avril 2009 à 17:27
moulesfrites Messages postés 25 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 29 mai 2009 - 30 avril 2009 à 17:22
Bonjour,j'ai une fonction qui calcule une valeur contenue dans var n. Je voudrai intégrer cette valeur dans input text name="calcul'.$x.'" en boucle dans la fonction. On m'a conseillé d'utiliser eval mais ça ne marche pas. Qq aurait-il une autre piste... merci

function calculTotal(){
for (var i=0;i<=5;i++){
document.calcul.total.value = parseFloat(document.calcul.nbradulte.value) + Math.round(parseFloat(document.calcul.nbrenfant.value)/3);
var n = poidpiece[i] * document.calcul.total.value * Math.round(document.calcul.nombre1.value)/4000;
document.calcul.calcul1.value = n ; //c'est ici que ça coince je voudrai pouvoir faire document.calcul.calcul[i].value=n
}}
</script>
etc...
<td><?php $cal='<input size="2" name="calcul'.$x.'" value= '.$donnees['quantite'].' disabled="disabled" type="text" onkeypress="chiffres(event)"/>';
A voir également:

3 réponses

NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
28 avril 2009 à 00:04
Bonsoir,

document.calcul.elements["calcul"+i] non?
0
moulesfrites Messages postés 25 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 29 mai 2009
28 avril 2009 à 22:37
bonjour nookz, merci pour la piste mais ce n'est pas encore la bonne
j'ai bouquiné et trouvé ceci mais ça ne marche pas non plus

var nomchamp='calcul'+i ;
instruction="document.formul."+nomchamp+".value" = r ;
eval(instruction) ;

en attendant d'avoir une solution je m'en suis sorti avec des

switch (i) // debut du switch
{ case 0 : var n = r * Math.round(document.formul.nombre.value)/4000 ;
document.formul.calcul.value = n ;
break; // ... et on sort du switch.
case 1 : var n = r * Math.round(document.formul.nombre1.value)/4000 ;
document.formul.calcul1.value = n ;
break; // ... et on sort du switch.
case 2: var n = r * Math.round(document.formul.nombre2.value)/4000 ;
document.formul.calcul2.value = n ;
break;
case 3 : var n = r * Math.round(document.formul.nombre3.value)/4000 ;
document.formul.calcul3.value = n ;
break; // ... et on sort du switch.

mais 25 case je n'aime pas beaucoup,...
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
29 avril 2009 à 08:40
Bonjour,

J'ai repris et modifié légèrement ce que vous aviez trouvé
var nomchamp="calcul"+i ;
instruction="document.formul."+nomchamp+".value ="+ r ;
eval(instruction) ;

Je pense que ça marchera mieux (mais pas sûre)
0
moulesfrites Messages postés 25 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 29 mai 2009
29 avril 2009 à 12:36
Voici ci-dessous le petit script ou j'ai tiré l'extrait suivant:

var nomchamp="calcul"+i ;
instruction="document.formul."+nomchamp+".value = r" ;
eval(instruction) ;


La solution est je pense dans ce script qui marche parfaitement, à condition de faire une boucle dans les input et de bien comprendre ce script, si tu si pouvais me le détailler ça m'aiderai sinon je referai un message merci

PS quand je modifie le nom de la fonction ça ne marche plus pourquoi...?

<html>
<head>
<title>Objets Array et Math</title>
<script language="JavaScript">
function tirage6numeros() {
var bontirage=new Array();
for(i=1;i<7;i++) {
bontirage[i]=i;
}
for(i=1;i<7;i++) {
nomchamp="boule"+i;
instruction="document.form1."+nomchamp+".value=bontirage[i]";
eval(instruction);
}}
</script>
</head>
<body>
<form name="form1" method="post" action="">
<input name="boule1" type="text" id="1" size="5" value="9"
<input name="boule2" type="text" id="2" size="5" value="9"
<input name="boule3" type="text" id="3" size="5" value="9"
<input name="boule4" type="text" id="4" size="5" value="9"
<input name="boule5" type="text" id="5" size="5" value="9"
<input name="boule6" type="text" id="6" size="5" value="9"
<input type="button" name="Submit" value="Tirage 6 numéros" onMouseMove="tirage6numeros()">
</form>
</body>
</html>
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514 > moulesfrites Messages postés 25 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 29 mai 2009
29 avril 2009 à 12:43
Bon au vu du script j'ai vu que j'avais une erreur :
var nomchamp="calcul"+i ;
instruction="document.formul."+nomchamp+".value = r" ;
eval(instruction) ;

pour vous expliquer comment cela fonctionne, la fonction eval ci-dessus prend en paramètre une chaîne de caractères qu'elle interprète comme une instruction.
Par exemple :
var a = 1;
var b = 2;
eval("a = a +b ") ;

à la fin de l'eval la variable a sera égale à 3

donc dans votre cas il faut que dans la chaîne vous ayez "document.formul.calcul1.value = r" et que r ait une valeur pour que ça marche. Le + quand vous faîtes par exemple calcul+i concatène les deux chaînes, ce qui veut dire que vous avez bien document.formul.calcul1.value normalement dans la variable instruction.
Si ma nouvelle solution ne marche pas, ajoutez :
alert(instruction); avant le eval(instruction); comme ça on saura quelle chaîne de caractères est contenue dans la variable.
0
moulesfrites Messages postés 25 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 29 mai 2009 > NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013
30 avril 2009 à 17:22
ok merci pour tout j'ai modifié le script avec une boucle php et java script. A envoyer à tous ceux qui veulent modifier des POST text via javascript

<html>
<head>
<title>exemple de var javasript vers $ php en boucle</title>
<script language="JavaScript">
function numeros() {
var tableau=new Array();
for(i=0;i<7;i++) {
tableau[i]=i;}
for(i=0;i<7;i++) {
nomchamp="boule"+i;
instruction="document.form1."+nomchamp+".value=tableau[i]";
eval(instruction);
} }
</script>
</head>
<body>
<form name="form1" method="post" action="">
<?php $az='' ; $x='' ;
for($x=0;$x<7;$x++){
$az='<input size="2" name="boule'.$x.'" value="100" type="text" />' ;
echo $az ; } ?>
<input type="button" name="Submit" value="exemple de var javasript vers $ php en boucle" onMouseMove="numeros()">
</form>
</body>
</html>
0
moulesfrites Messages postés 25 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 29 mai 2009
29 avril 2009 à 11:23
non l'écriture n'est pas bonne, et le script est bloqué
0

Discussions similaires