Récuperer une donnée de formulaire

[Résolu]
Signaler
Messages postés
13
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006
-
Messages postés
13
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006
-
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

Messages postés
13
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006

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!
Messages postés
13
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006

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...
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
13
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006

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>
Messages postés
13
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006

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 ?
Messages postés
13
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006

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 ?