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

jQuery Discussion :

Récupérer ligne de formulaire générée automatiquement


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Par défaut Récupérer ligne de formulaire générée automatiquement
    Bonjour à tous,

    Je viens vers vous car je suis dans une impasse, je vous explique :

    J'ai un formulaire de base, des lignes sont ajouter automatiquement lorsque qu'on atteint le dernier champ de la ligne, alors la ligne est copié de manière à pouvoir enregistré plusieurs objets.

    Voici la ligne HTML qui est généré à chaque fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <div class="frm-absolute-inline duplicate">
    <input type="text" name="date" placeholder="01/01/2016" id="date" value="" style="width:80px;" />
    <input type="text" name="descr" placeholder="Description" id="descr" value="" />
    <input type="text" name="price"  placeholder="0,00" id="price" value="" style="width:80px;" /> &euro;
    </div>
    Mais je bloque sur comment récupérer les infos, j'ai essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var MrData = {};
        $("body").find(".duplicate").each(function(i){
            dater = $(this).find("#date");
            descr = $(this).find("#descr");
            price = $(this).find("#price");
            newA = {'date':dater.val(), 'descr' : descr.val(), 'price': price.val()};
            MrData[MrData.length] = newA;
        });
        console.log(MrData);
    Mais j'obtiens un Undefined, et les clés date, descr, price, sont tous vide.

    Mon objectif est d'envoyer la liste sous format json pour le traiter en php, mais comment obtenir un tableau json incrémenté, ou chaque ligne du json contient les informations des champs, du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MrData[0] = {'date' : date, 'descr' : descr, 'price' : price}
    MrDate[1] = ...
    Je ne sais pas si je suis clair, mais n'hésitez pas à me poser des question, je tâcherai d'y répondre.

    D'avance merci de votre participation...

  2. #2
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Au vu te ton code, tu as des id multiples !

    Un id doit être unique sir 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 !

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Par défaut
    Bonjour,
    Je viens de trouver la solution...

    Comme vous me le faite remarquer, j'ai retirer les id et les name de mes inputs qui sont inutile dans ce contexte, et j'ai modifier la manière de créer mon json

    Code : 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
     
    // Tableau
    var MrData = new Array();
    $(".duplicate").each(function(i){
        // Date
        dater = $(this).find("input[type='text']").eq(0).val();
        // Description    
        descr = $(this).find("input[type='text']").eq(1).val();
        // Prix
        price = $(this).find("input[type='text']").eq(2).val();
        // Si les 3 champs sont remplit (différent de rien)    
        if(dater != '' && descr != '' && price != ''){ 
            // Créer un nouvel index dans mon tableau
            MrData[MrData.length]  = {'date':dater, 'descr' : descr, 'price': price}; 
        }
    });
    // Converti mon tableau en chaîne JSON pour l'envoyer à PHP
    MyJson = JSON.stringify(MrData);
    Et tout fonctionne.
    Merci pour votre intervention, je place le sujet en résolu

    Bonne journée à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Récupérer des données internet générée sous html par un Formulaire avec méthode "POST"
    Par philoul dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/08/2013, 15h44
  2. Réponses: 3
    Dernier message: 08/08/2008, 20h14
  3. Formulaire numérotation automatique des lignes
    Par tomelo59 dans le forum IHM
    Réponses: 2
    Dernier message: 28/11/2006, 19h47
  4. Réponses: 1
    Dernier message: 30/05/2006, 15h12

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