Récupérer des champs créer dynamiquement

farsicomores Messages postés 6 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 11 mars 2011 - 9 mars 2011 à 10:34
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 - 13 mars 2011 à 14:39
bonjour je suis entrain de faire un formulaire de saisi et je créer les champs dynamiquement et et je voudrais calculé les valeurs mais je n'y arrive pas car j'ai concaténé les id pour que ça donne des noms différent mais je ne sais pas comment récupéré les id concaténés.
voici mon code, d’ailleurs une partie du code j'ai trouvé les idées ici.
<script language="javascript">

//---------------
function Calcul(){

     var Obj   = null,
      Qte,
      Prix,
      Total = 0,
      Valeur;
  
  //-- tant que l'objet existe
  while( Obj = document.getElementById('qte')){
    //-- recup des valeurs
    Qte    = parseInt( Obj.value);

    Prix   = parseFloat( document.getElementById('pu').value);
Valeur = Qte * Prix;  // pas mis les tests si isNaN
    //-- affiche le resultat
    document.getElementById('montant').value = Valeur;
    //-- ajoute dans total
    Total += Valeur;
    //-- au suivant
    Ind ++;
  }
  //-- mets dans total
 // document.getElementById( "total").value = Total;
}



var Compteur = 0;
//--------------------------
function Delete_Ligne( obj_){
  var Parent;
  var Obj = obj_;
  if( Obj){
    //-- tant que pas la balise <TR>
    do{
       Obj = Obj.parentNode;
    }while( Obj.tagName != "TR")
    //-- Recup du parent
    Parent = Obj.parentNode;
    //-- Suppression de la ligne
    if( Parent){
      Parent.deleteRow( Obj.rowIndex)
    }
  }
}
//----------------------
function Create_Ligne(){
  //-- compteur pour le FUN
  Compteur++;
  //-- Get objet tableau
  var O_Table = document.getElementById('fact-tablee');
  //-- Get nombre de ligne du tableau
  var NbrLigne = O_Table.rows.length;
  //-- Position d'insertion
  var Pos = NbrLigne;
  //-- Insertion d'une ligne
  O_Row  = O_Table.insertRow( Pos);
   
  //-- Insertion des cellules
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = O_Row.rowIndex;
  var ligne=parseInt(O_Cell.innerHTML);  //recupere le nombre de la ligne
 
    
  //alert(ligne);
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '
 0

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = ' 
  

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '
0 € 

 
';
  
   
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '

 
';
  
 O_Cell = O_Row.insertCell(-1);
 O_Cell.innerHTML = '

';  
}

</script>


------
<html>

    
                                       |
DESIGNATION |
Qté |
P.U. |
TVA |
PRIX HT |
PRIX TTC |
 |
 |

  
   |
</html>

1 réponse

007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
13 mars 2011 à 14:39
L'utilisation de getElementsByTagNames permet de récupérer les inputs existants, puis de calculer les produits à partir des quantités ...

var tslNpt=document.getElementsByTagNames('input'),npt,idx,lgn;
// Appeler tous les inputs  
for (var i=0;i<tlsInp.length;i++) {npt=tlsInp[i];
   // Récupérer leur id (idx)
   idx=npt.id;
   // et les numéros de lignes des inputs qte
   if (ids.substr(0,3)=='qte') {lgn=parseInt(npt.id.substr(3));
   // Calculer les produits avec leurs id : idx et les id reconstitués 'pu'+lgn ...
   }
}

Le code serait plus homogène avec un règle de construction des noms (par exemple les trois premières consonnes) qui permettrait par exemple (avec dsg, qnt et prx) de retrouver sans hésitations les désignations, quantité et prix unitaires

Attention encore aux virgules pour les centimes qu'il faut remplacer par des points pour faire les calculs en javasript

prixPourCalcul=prixEdition.replace(/,/,'.');
prixEdition=prixPourCalcul.replace(/\./,','); 
0
Rejoignez-nous