Recupérer la value d'un input généré via JS [Résolu]

cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention - 29 oct. 2007 à 15:44 - Dernière réponse : cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention
- 29 oct. 2007 à 16:04
    Re saluté ...
Je suis encore sur la génération d'un formulaire avec autoincrémentation des lignes...
j'ai trouvé un bon script qui me permet de générer des lignes à partir d'une ligne de références. ça marche impec.
J''ai donc un formulaire avec  trois input texte par ligne générée.
J'aimerai maintenant arriver à récupérer les values de ces trois input sur une actions onChange placée sur un des trois champs.
voici un html qui devrai marcher ...
Mon souci se trouve dans la fonction verrifRef.
Le système d'ajout de lignes marche bien ..mais j'ai du mal à comprendre comment naviger dans les divers éléments du formulaire...
merci à vous !!!

<script>
// Tableau

/*
 * Utilisation : 
 *  1. Créer un tableau avec la proprieté class= "dTable" (Dynamic TABLE)
 *  2. Le tableau doit être standard : il contenir un <thead>, un <tbody> et un <tfoot>
 *     et utiliser à bon escient les <td> et <th>.
 *  3. La première ligne du tbody sera utilisée comme ligne de réference.
 *     Elle sera clonée pour en ajouter de nouvelle. Elle ne sera pas affichée.
 */

window.onload = dtableInit;

/* initialise le script */
function dtableInit() {
    var table = document.getElementsByTagName('TABLE');
    for ( var i = 0; i < table.length; i++ ) {
        // on récupère tous les tableaux dynamiques
        if ( table[i].className = 'dTable' ) {
            var tbody = table[i].tBodies[0];
            var newTr = tbody.rows[0].cloneNode(true);
           
            // on masque la première ligne du tbody (la ligne de reference)
            tbody.rows[0].style.display = 'none';
           
            // on en ajoute une
            tbody.appendChild(newTr);
        }
    }
}

/* trouve le tag "parentTagName" parent de "element" */
function getParent(element, parentTagName) {
    if ( ! element )
        return null;    else if ( element.nodeType 1 && element.tagName.toLowerCase() parentTagName.toLowerCase() )
        return element;
    else
        return getParent(element.parentNode, parentTagName);
}

/* ajoute une ligne */
function addLigne(link) {
    // 1. récuperer le node "TABLE" à manipuler
    var td = link.parentNode;
    var table = getParent(td,'TABLE');
   
    // 2. on va manipuler le TBODY
    var tbody = table.tBodies[0];
   
    // 3. on clone la ligne de reference
    var newTr = tbody.rows[0].cloneNode(true);
    tbody.appendChild(newTr);
   
    if ( document.all )  // pour IE
        newTr.style.display = "block";
    else
        newTr.style.display = "table-row"; // pour Gecko
}

/* supprimer une ligne */
function delLigne(link) {
    // 1. récuperer le node "TABLE" à manipuler
    var td = link.parentNode;
    var table = getParent(td, 'TABLE');
   
    // 2. récuperer le TBODY
    var tbody = table.tBodies[0];
   
    // 3. Supprimer le TR
    tbody.removeChild(getParent(td, 'TR'));
}

/**** fonction ajax ****///
    function verrifRef(strFiltre, url, link){
            // alert ('filtre:'+strFiltre);
            //alert ('link='+link);
       
       
            var td = link.parentNode;
            var tr = getParent(td,'tr');
            //    alert (td +' --- '+tr);
           
           
            var td = tr.getElementsByTagName('td');
            alert (link.tabIndex);
                   
            /*ici j'aimerai récupérer les trois values des champs input de la ligne en cours ...
            mais impossible d'accéder à ces éléments ....
            j'ai testé td.('nom_du_input').value
            td[0]['nom_iput'].value
            etc etc ...
            mais pas trouve :(
            */
                   
                   
                getXhr();
                // On défini ce qu'on va faire quand on aura la réponse
                xhr.onreadystatechange = function(){
                    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok                    if(xhr.readyState 4 && xhr.status 200){
                    //    alert(xhr.responseText);
                        //on place la réponse
                        //document.getElementById('divlistcorres').innerHTML = xhr.responseText;
                       
                       
                        // xhr.responseText renvoie 1 ou 0 si le résultat des trouvé ou pas
                        //si on trouve pas on affiche la troisieme case du tableau
                       
                        if (xhr.responseText == 0) { //la ref n'existe pas
                                td[3].style.visibility='visible';
                                tr.style.background='#EB8A8A';
                        } else {
                                td[3].style.visibility='hidden';
                                tr.style.background='none';
                        }
                       
                    }
                }
            //    xhr.open("GET","ajax_onglet.php",true);
                xhr.open("POST",url,true);
                    // ne pas oublier ça pour le post
                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
               
            //    xhr.send(null);
                xhr.send("filtre="+strFiltre+"&ajax=1");
               
            }
           
           
           
           
           
            /*************/
           
                        var xhr = null;
     
             function getXhr(){
                if(window.XMLHttpRequest) {// Firefox et autres
                   xhr = new XMLHttpRequest();
                  // alert ('XMLHttpRequest()');
                }    else if(window.ActiveXObject){ // Internet Explorer
                   try {
                            xhr = new ActiveXObject("Msxml2.XMLHTTP");
                    //         alert ('Msxml2.XMLHTTP');
                        } catch (e) {
                            xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    //        alert ('Microsoft.XMLHTTP');
                        }
                }
                else { // XMLHttpRequest non supporté par le navigateur
                   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                   xhr = false;
                }

            }
</script>

 
  <form action="" method="post">
         
        ----

          R&eacute;f&eacute;rence |
          Code |
          Indice |
          Cr&eacute;er le document |
          Ajouter une ligne |
          Suppr |
       
     
      <tfoot>
        ----

          Ajouter une ligne |
       
      </tfoot>
     
        ----

          ,
          ,
          ,
         
              <select name ="doc_create[]" id="doc_create" style="width:40px;">
                <option value="0">Non</option>
                <option value="1">Oui</option>
              </select>
         ,
          ,
          ,
       
        ----

          ,
          ,
          ,
         
              <select name="doc_create[]" id="doc_create" style="width:40px;">
                <option value="0">Non</option>
                <option value="1">Oui</option>
              </select>
         ,
          ,
          ,
       
     
   

   
     
   

  </form>
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention - 29 oct. 2007 à 16:04
3
Merci
    c'est bon j'ai trouvé !

            var doc_ref = td[0].firstChild.value ;
            var doc_code_ams = td[1].firstChild.value;
            var doc_indice = td[2].firstChild.value;
               
        //    alert ('ref='+doc_ref+' ams='+doc_code_ams+' indice='+doc_indice);

I think, JS hate me ...

Merci cs_caviar 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_caviar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.