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 :

Dupliquer des lignes


Sujet :

JavaScript

  1. #21
    Membre extrêmement actif
    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
    Billets dans le blog
    1
    Par défaut
    Pour la duplication, ça deviens un poil plus complexe, là c'était facile ^^

    voilà ce que ça donne :

    Code js : 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
     
    function duplicateRow(day){
        var last_day = $("#HD_" + (day - 1)).clone()
                         .attr('id',   'HD_' + day);
     
        $("#HD_" + day).replaceWith(last_day);
     
        var nb_tranche = 0;
        $("#HD_" + day).find('.tranche_hor_' + (day - 1)).each(function(){
     
                $(this).attr('id', "tranche_" + day + "_" + nb_tranche++ );   
                $(this).removeClass('tranche_hor_' + (day - 1));
                $(this).addClass('tranche_hor_' + (day));
     
             });
     
        $("#HD_" + day).find("div[id^='tabs']")
            .attr('id', "tabs0" + day );   
     
    }

    http://jsfiddle.net/6kTBv/19/

    Tu noteras l'ajout d'un nouvel id sur l'élément encadrant les lignes pour pouvoir faire la duplication.

    Quand tu fais un ajout de ligne, et bien l'input type text garde le même nom
    Oui, il va falloir faire un peu la même sauce que ce que j'ai fait pour la duplication avec le 'each' sur les input et remettre à jour les noms avec les bon numéros.
    Avec un peu d'huile de coude..
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  2. #22
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 233
    Par défaut
    Bonjour,
    Quand tu fais un ajout de ligne, et bien l'input type text garde le même nom
    je vais faire la même réponse faite sur une autre discussion, assez proche au niveau du thème,
    Citation Envoyé par NoSmoking Voir le message
    dans ce cas mets des NAMEs du type name="le_nom[]" qui te permettra de récupérer coté serveur un tableau.

  3. #23
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 661
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 661

  4. #24
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,


    je vais faire la même réponse faite sur une autre discussion, assez proche au niveau du thème,
    Oui, tu as raison, j'ai juste passé par une variable avec le numéro du jour, ca me donne comme résultat :
    array (
    'from_d' =>
    array (
    1 =>
    array (
    0 => '0:00',
    ),
    2 =>
    array (
    0 => '',
    1 => '',
    ),
    4 =>
    array (
    0 => '0:00',
    ),
    5 =>
    array (
    0 => '',
    ),
    6 =>
    array (
    0 => '',
    ),
    7 =>
    array (
    0 => '',
    ),
    ),
    'from_f' =>
    array (
    1 =>
    array (
    0 => '1:00',
    ),
    2 =>
    array (
    0 => '',
    1 => '',
    ),
    4 =>
    array (
    0 => '0:45',
    ),
    5 =>
    array (
    0 => '',
    ),
    6 =>
    array (
    0 => '',
    ),
    7 =>
    array (
    0 => '',
    ),
    ),
    'submit' => 'Enregistrer',
    )
    Ca devrait être plus facilement exploitable

  5. #25
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Citation Envoyé par Golgotha Voir le message
    Pour la duplication, ça deviens un poil plus complexe, là c'était facile ^^

    voilà ce que ça donne :

    Code js : 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
     
    function duplicateRow(day){
        var last_day = $("#HD_" + (day - 1)).clone()
                         .attr('id',   'HD_' + day);
     
        $("#HD_" + day).replaceWith(last_day);
     
        var nb_tranche = 0;
        $("#HD_" + day).find('.tranche_hor_' + (day - 1)).each(function(){
     
                $(this).attr('id', "tranche_" + day + "_" + nb_tranche++ );   
                $(this).removeClass('tranche_hor_' + (day - 1));
                $(this).addClass('tranche_hor_' + (day));
     
             });
     
        $("#HD_" + day).find("div[id^='tabs']")
            .attr('id', "tabs0" + day );   
     
    }

    http://jsfiddle.net/6kTBv/19/

    Tu noteras l'ajout d'un nouvel id sur l'élément encadrant les lignes pour pouvoir faire la duplication.



    Oui, il va falloir faire un peu la même sauce que ce que j'ai fait pour la duplication avec le 'each' sur les input et remettre à jour les noms avec les bon numéros.
    Avec un peu d'huile de coude..

    Je viens de trouver le dernier problème je pense.

    Je suis sur Mardi, j'ai ce code
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div class="gauche centrer tranche_hor_2" id="tranche_2_0" style="width: 340px; margin-top: 10px;">
    	De <input type="text" name="from_d[2][]" class="margeHautMoins4px timeClass ui-timepicker-input" style="width: 60px;" autocomplete="off"> à 
    	<input type="text" name="from_f[2][]" id="tabs20from_f" class="margeHautMoins4px timeClass ui-timepicker-input" style="width: 60px;" autocomplete="off">
    </div>

    Toujours sur Mardi, je décide de cliquer sur Dupliquer. J'obtiens :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div class="gauche centrer tranche_hor_2" id="tranche_2_0" style="width: 340px; margin-top: 10px;">
    	De <input type="text" name="from_d[1][]" class="margeHautMoins4px timeClass ui-timepicker-input" style="width: 60px;" autocomplete="off"> à 
    	<input type="text" name="from_f[1][]" id="tabs10from_f" class="margeHautMoins4px timeClass ui-timepicker-input" style="width: 60px;" autocomplete="off">
    </div>

    Le problème, c'est l'id créé précédemment. on retrouve id="tabs10from_f" qui est aussi l'ID de Lundi.

    Vous voyez le problème ?

    Merci

  6. #26
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    un id doit être unique sur la page ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #27
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Oui, je le sais bien, mais je ne sais pas comment faire à partir de la fonction duplicate.

  8. #28
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    heu ... c'est une blague ???

    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #29
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Je me suis mal exprimé SpaceFrog

    Enfin, j'ai supprimé l'ID car il n'était pas utile ici.

    Par contre, quand je fais supprimer une tranche horaire, et que c'était la dernière ligne, actuellement, la suppression n'est pas possible, et c'est très bien. Par contre, ca doit être possible au moins de vider les champs ?

    Et un autre trucs, j'ai rajouté timepicker, comme ça, lorsqu'on clique sur le champs heure, ca nous propose des horaires.
    Le souci, et je ne parviens pas à comprendre d'où celà vient, mais si je duplique, ou si j'ajoute une tranche horaire, et bien, ca ne fonctionne plus. Et pourtant, j'ai bien la classe timeClass qui est en place.

    Si vous avez des pistes à me fournir

    Merci

  10. #30
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Quand je duplique, les nouveaux inputs ont le même nom que les champs du jour précédent
    Encore un problème que je n'arrive pas à résoudre.

  11. #31
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    J'ai trouvé en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $("#HD_" + num_jour).find('[name="from_d_' + (num_jour - 1) + '[]"]').each(function(){
    	$(this).attr('name', "from_d_" + num_jour + "[]" ); // ajout
    });
    $("#HD_" + num_jour).find('[name="from_f_' + (num_jour - 1) + '[]"]').each(function(){
    	$(this).attr('name', "from_f_" + num_jour + "[]" ); // ajout
    });

Discussions similaires

  1. Dupliquer des lignes
    Par PIEPLU dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/02/2011, 14h48
  2. [MySQL] Dupliquer des lignes d'une table dans une meme table
    Par HAbroc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/06/2009, 22h22
  3. dupliquer des lignes
    Par PiliSql dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/07/2008, 14h08
  4. dupliquer des lignes lors d'un merge
    Par mitmit dans le forum SAS Base
    Réponses: 1
    Dernier message: 12/05/2008, 15h11
  5. Dupliquer des lignes de données
    Par PamelaGeek dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/01/2006, 20h01

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