Integrer variable javascript dans input text

moulesfrites Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
moulesfrites Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   514
 
Bonsoir,

document.calcul.elements["calcul"+i] non?
0
moulesfrites Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   514
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   514 > moulesfrites Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > NookZ Messages postés 2138 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
non l'écriture n'est pas bonne, et le script est bloqué
0