Récuperer une donnée de formulaire

Résolu
marcozambezi Messages postés 13 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 30 décembre 2006 - 30 déc. 2006 à 06:01
marcozambezi Messages postés 13 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 30 décembre 2006 - 30 déc. 2006 à 16:39
bonjour,

j'ai un formulaire qui convertit des km/L en L/100km... et réciproquement.
Je souhaite laisser le choix du nombre de décimales..
J'arrive très bien à intégrer cette virgule au résultat mais je n'arrive pas à faire en sorte qe dès que l'on a sélectionné le nombre de décimales, cela actualise immédiatement les autres valeurs ....

comment faire?

<script>
function round(number,X){X = (!X ? 18 : X); return Math.round(number*Math.pow(100,X))/Math.pow(100,X);}
function conso(input){
var consu=input.value;
var Type=input.name;
var decim = document.forms['decim'].elements['decim'].value;
if(Type=="lkm"){lkm=consu/1;}
if(Type=="l100km"){lkm=consu/100;}
lkm=round(lkm*1);
l100km=round(lkm*100);
if(Type!="lkm"){document.consumoX.lkm.value=lkm.toFixed(decim);}
if(Type!="l100km"){document.consumoX.l100km.value=l100km.toFixed(decim);}}

function decim(that)
    {if(that.value.indexOf(",")>=0)
        {that.value=that.value.replace(/\,/g,".");}}
function calcul( this_)
    {
    decim( this_);
    conso( this_);
    }
</script>
<form name="consumoX" id="decim">
<select name="decim" type="text" onchange="calcul(this.form)"/>
<option value="0">0 décimales</option>
<option value="1">1 décimales</option>
<option value="2" selected="selected">2 décimales</option>
<option value="3">3 décimales</option>
</select>
Litres par km</label>

Litres pour 100 km</label>

</form>

6 réponses

marcozambezi Messages postés 13 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 30 décembre 2006
30 déc. 2006 à 16:39
raaah, je suis dégouté.

Mais content quand même...

il suffisait juste de retirer 'form' dans

<select name="decim" type="text" onchange="calcul(this.form)"/>

pour laisser

<select name="decim" type="text" onchange="calcul(this)"/>

...


pourtant, j'étais sûr d'avoir essayer!
3
marcozambezi Messages postés 13 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 30 décembre 2006
30 déc. 2006 à 06:20
idealement, j'aimerais mettre le choix des décimales et des valeurs à convertir dans deux formulaires différents, mais là, je sais encore moins comment récupérer le choix de la décimales...
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
30 déc. 2006 à 08:42
B
onjour...
en mettant un événemént onchange sur le SELECT des décimales, associé à une fonction de mise à jour...
exemple :



<select id= "decim" name="decim" type="text" onchange="Mise_A_Jour();"/>

//--------------------
function Mise_A_Jour(){



  //-- Récup des Objets




  var O_lkm    = document.getElementById('lkm');
  var O_l100km = document.getElementById('l100km');
  //-- Appel à ta fonction
  calcul( O_lkm);
  calcul( O_l100km);
}

Travailes avec des ID sur tes différents éléments pour faciliter leur accés grace à
document.getElementById.

Nota :
 - n'acceptes pas la réponse si la pas solutionnée...
 - Problème avec toFixed, toPrecision tu en es ou..





;0)
0
marcozambezi Messages postés 13 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 30 décembre 2006
30 déc. 2006 à 15:04
merci pour ta réponse.
Mais ça ne marche pas... snif. J'ai du me tromper...
Par ailleurs, il y a en moyenne une cinquantaine de champs de calcul automotiques dams mes forumalaires, donc je cherchais une méthode qui m'évite d'avoir à rajouter 2 lignes de code par input... c'est vraiment pas possible ?

pour le toPrecision, je t'en reparle, je suis presque arrivé au bout de mes peines.

<script>
function round(number,X){X = (!X ? 18 : X); return Math.round(number*Math.pow(100,X))/Math.pow(100,X);}
function conso(input){
var consu=input.value;
var Type=input.name;
var decim = document.forms['decim'].elements['decim'].value;
if(Type=="lkm"){lkm=consu/1;}
if(Type=="l100km"){lkm=consu/100;}
lkm=round(lkm*1);
l100km=round(lkm*100);
if(Type!="lkm"){document.consumoX.lkm.value=lkm.toFixed(decim);}
if(Type!="l100km"){document.consumoX.l100km.value=l100km.toFixed(decim);}}

function decim(that)
    {if(that.value.indexOf(",")>=0)
        {that.value=that.value.replace(/\,/g,".");}}
       
function Mise_A_Jour(){
  //-- Récup des Objets
  var O_lkm    = document.getElementById('lkm');
  var O_l100km = document.getElementById('l100km');
  //-- Appel à ta fonction
  calcul( O_lkm);
  calcul( O_l100km);
}
</script>
<form name="consumoX" id="decim">
<select name="decim" type="text" onchange="Mise_A_Jour();"/>
<option value="0">0 décimales</option>
<option value="1">1 décimales</option>
<option value="2" selected="selected">2 décimales</option>
<option value="3">3 décimales</option>
</select>
Litres par km</label>

Litres pour 100 km</label>

</form>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marcozambezi Messages postés 13 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 30 décembre 2006
30 déc. 2006 à 16:07
ok, j'ai compris,
en fait, en mettant Mise_A_Jour dans la fonction globale 'calcul', et en rempaçant onchange=Mise_A_Jour par onchange="calcul(this)"...
ça marche...

merci!

ceci dit, je suis frustré, y a vraiment pas une solution pour pas avoir à rajouter toutes ces lignes de code ?
0
marcozambezi Messages postés 13 Date d'inscription samedi 23 décembre 2006 Statut Membre Dernière intervention 30 décembre 2006
30 déc. 2006 à 16:08
ok, j'ai compris,
en fait, en mettant Mise_A_Jour dans la fonction globale 'calcul',

function calcul( this_)

    {

    decim( this_);

    conso( this_);

Mise_A_Jour( this_);   

    }

et en rempaçant onchange=Mise_A_Jour par onchange="calcul(this)"...

<select name="decim" type="text" onChange="calcul(this);"/>

ça marche...

merci!

ceci dit, je suis frustré, y a vraiment pas une solution pour pas avoir à rajouter toutes ces lignes de code ?
0
Rejoignez-nous