IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ajouter un ligne à un tableau avec des inputs


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Points : 21
    Points
    21
    Par défaut Ajouter un ligne à un tableau avec des inputs
    Bonjour,

    Sur un formulaire j'ai un tableau avec des champs inputs à remplir, je voudrais pourvoir rajouter des lignes et que les ID des inputs soit modifer avec +1, par exemple nom1 puis nom2, ....

    Voici mon tableau :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <table id="matable">
    	<tr>
        	<td><b>Nom du site</b></td>
            <td><b>Adresse</b></td>
            <td><b>Adresse Suite</b></td>
            <td><b>CP</b></td>
            <td><b>Ville</b></td>
            <td><b>Pays</b></td>
            <td><b>Nom du contact</b></td>
            <td><b>t&eacute;l</b></td>
            <td><b>Fax</b></td>
            <td><b>Mobile</b></td>
            <td><b>E-Mail</b></td>
        </tr>
        <tr>
        	<td><input type="text" id="nomad" name="nomad" /></td>
            <td><input type="text" id="ad1" name="ad1" /></td>
            <td><input type="text" id="ad2" name="ad2" /></td>
            <td><input type="text" id="cp" name="cp" /></td>
            <td><input type="text" id="ville" name="ville" /></td>
            <td><input type="text" id="pays" name="pays" /></td>
            <td><input type="text" id="nomco" name="nomco" /></td>
            <td><input type="text" id="tel" name="tel" /></td>
            <td><input type="text" id="fax" name="fax" /></td>
            <td><input type="text" id="mobile" name="mobile" /></td>
            <td><input type="text" id="email" name="email" /></td>
        </tr>
    </table>

    Comment puis-je rajouter des lignes en JS ?

    Merci

  2. #2
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Voici une solution avec jQuery :

    http://jsfiddle.net/8bzo5gfw/

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <table id="matable">
    	<tr>
        	<td><b>Nom du site</b></td>
            <td><b>Adresse</b></td>
            <td><b>Adresse Suite</b></td>
            <td><b>CP</b></td>
            <td><b>Ville</b></td>
            <td><b>Pays</b></td>
            <td><b>Nom du contact</b></td>
            <td><b>t&eacute;l</b></td>
            <td><b>Fax</b></td>
            <td><b>Mobile</b></td>
            <td><b>E-Mail</b></td>
        </tr>
        <tr>
        	<td><input type="text" id="nomad" name="nomad" /></td>
            <td><input type="text" id="ad1" name="ad1" /></td>
            <td><input type="text" id="ad2" name="ad2" /></td>
            <td><input type="text" id="cp" name="cp" /></td>
            <td><input type="text" id="ville" name="ville" /></td>
            <td><input type="text" id="pays" name="pays" /></td>
            <td><input type="text" id="nomco" name="nomco" /></td>
            <td><input type="text" id="tel" name="tel" /></td>
            <td><input type="text" id="fax" name="fax" /></td>
            <td><input type="text" id="mobile" name="mobile" /></td>
            <td><input type="text" id="email" name="email" /></td>
        </tr>
    </table>
    <button id="add_line">ajouter une ligne</button>

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $("#add_line").click(function(){    
       var line = $("#matable tr:eq(1)").clone();
       var nb_line = $("#matable tr").length;
        $(line).find( "td input" ).each(function( index ) { 
           var input = $(line).find( "td input" )[index];
           var id = $(input).attr("id");
           $($(line).find( "td input" )[index]).attr('id', id + nb_line);
        });
        $("#matable").append(line);
    });

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Points : 21
    Points
    21
    Par défaut Suite
    Cela fonctionne bien sur http://jsfiddle.net mais pas sur mon site, j'ai mis le code dans mon fichier scripts.js mais rien ne ce passe

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Points : 21
    Points
    21
    Par défaut suite
    ça fonctionne comme cela, super merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function insert_ligne(){    
       var line = $("#matable tr:eq(1)").clone();
       var nb_line = $("#matable tr").length;
     
        $(line).find( "td input" ).each(function( index ) { 
           var input = $(line).find( "td input" )[index];
           var id = $(input).attr("id");
           $($(line).find( "td input" )[index]).attr('id', id + nb_line);
        });
     
        $("#matable").append(line);
    }
    Autre question, si je veux supprimer une ligne ?

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Bonjour,
    comme tu as la référence de la ligne ajoutée il te suffit de créer un button qui la remove.

    Au passage 'id', id + nb_line est une mauvaise solution si tu désires supprimer des lignes il y a lourd à parier que tu te retrouvera avec des éléments possédant la même ID à un moment ou à un autre, mais as tu besoin des ID d'abord ???

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Oui pour récupérer les infos des inputs

  7. #7
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Oui, il faudrait récupérer l'id de la dernière ligne et faire +1. Sinon ça risque de poser problème effectivement.

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    D'ailleurs quand je fais un $_POST d'une ligne ajouter je n'obtient rien, comment faire ?

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    L'id n'a jamais permis de récupérer les informations liées à un cham, c'est name qui fait ça.
    Et du coup, tu n'as pas besoin de valeurs numériques, une syntaxe type tableau PHP fera l'affaire
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input name="foo[]" value="bar" />
    <input name="foo[]" value="baz" />
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_POST['foo']);  // array([0]=>'bar', [1]=>'baz')

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/09/2012, 16h40
  2. Extraction d'un tableau avec des lignes distinct
    Par Apprenti01 dans le forum Cobol
    Réponses: 2
    Dernier message: 27/02/2012, 14h46
  3. Afficher et masquer des lignes de tableau avec IE8
    Par horkets dans le forum jQuery
    Réponses: 6
    Dernier message: 24/08/2011, 15h25
  4. Réponses: 2
    Dernier message: 03/12/2008, 17h46
  5. Ajouter 1 ligne à un tableau avec rowspan & colspan
    Par softflower dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/11/2006, 22h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo