Champs de formulaires générés, non pris en compte par javascript

[Résolu]
Signaler
Messages postés
138
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
29 février 2008
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour à tous,

J'ai eu beau chercher un petit moment, je n'ai pas trouvé de réponse à ma question.

Voilà mon problème :
J'ajoute dynamiquement des champs input dans un formulaire en utilisant la méthode document.appendChild(...), jusque là aucun problème.

J'ai une fonction javascript qui doit récupérer les valeurs des input. Cela fonctionne pour les champs que j'ai inséré en dur dans mon formulaire.
Cependant ça ne fonctionne pas pour les champs qui ont été ajoutés dynamiquement.
On dirait qu'étant donné que le code source généré concernant les nouveaux champs n'apparait pas dans le code source de la page, javascript ne les voit pas.

Connaissez-vous une solution ?

Merci d'avance

4 réponses

Messages postés
138
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
29 février 2008

Désolé en fait c'est moi qui avait fait une erreur !

J'avais un problème de compteur, du coup les champs ne s'appelaient pas correctement.
De plus la valeur num_services n'était pas incrémentée ce qui fait que rien nen fonctionnait.

Désolé pour le dérangement
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

    >>Cependant ça ne fonctionne pas pour les champs qui ont été ajoutés dynamiquement.
          aucune raison....     sauf, je dirais, une erreur ?
          on peut voir un PETIT extrait ?
          tout ce qu'il faut mais le minimum !  sinon ça décourage !

<hr />                Cordialement            Bul        
Messages postés
138
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
29 février 2008

var count_services = 0;

function addService()
{
    count_services++;
   
    var table = document.getElementById("services-list");
   
    [.......]
  
    //Création d'un champt texte
    var input = document.createElement("input");
    input.setAttribute("size", 5);
    input.setAttribute("type", "text");
    input.setAttribute("name", "data[Service"+count_services+"][price]");
    input.setAttribute("onkeyup", "getSubTotal(this);");
    input.setAttribute("id", "price-"+count_services); //Sert à la récupération de la valeur du champ
  
   [.......]
  
    //Ajout du champ texte
    td2.appendChild (input);
  
[.......]
  
    //Ajout des cellules dans la ligne
    tr.appendChild(td1);
    tr.appendChild(td2);
   
    //Ajout de la ligne dans le tableau
    table.appendChild(tr);
}

Aucun problème avec cette fonction, les champs sont bien ajoutés

function getSubTotal(input)
{
    subtotal = 0;
   
    var num_services = document.getElementById("num_services").value;
   
    for(var i=1; i<=num_services; i++)
    {
        price_field = document.getElementById("price-"+i); //Récupère les champs ajouté en dur dans le code source mais pas ceux ajouté dynamiquement
       
        if(price_field != undefined && price_field.value != '')
        {
            subtotal += parseFloat(price_field.value);
        }       
    }
   
    document.getElementById("subtotal").innerHTML = subtotal+" &euro;";
   
}
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,
>>Désolé pour le dérangement
    y' pas d'mal....
    poser une question, et surtout la mettre en forme ,
          fait souvent qu'on résoud seul...
    merci de nous l'avoir dit.
<hr />                Cordialement            Bul