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 :

Formulaire "illimité" mais ID différent


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut Formulaire "illimité" mais ID différent
    Bonjour à tous,
    J'aimerais créer une sorte de formulaire avec un boutton "Ajouter" pour avoir + de cases (et un bouton "X" pour la supprimer, mais il doit y avoir au minimum 1 ligne).
    J'ai déjà commencé en m'aidant de ceci: champ dynamique mais bouton ajout dessous
    Il fonctionne très bien sauf que, pour plus de facilité j'aimerais que chaque nouvel input est son propre Id (brute_1, brute_2, brute_3, etc...) mais je ne sais pas comment faire

    Voici où j'en suis :

    Code JavaScript : 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
    30
    function ajouter() {
     
        	var nom_fieldset = document.getElementById('choix');
     
    	var calque = document.createElement('div');
     
    	var champ_utilisation = document.createElement('input');
    	champ_utilisation.type = 'text';
    	champ_utilisation.className = 'monInput';
    	champ_utilisation.name = "brute";
     
    	var supprimer = document.createElement('input');
    	supprimer.type = 'button';
    	supprimer.value = 'X';
     
    	supprimer.onclick = function() {
    		le_calque_a_supprimer = this.parentNode;
    		lefieldset = le_calque_a_supprimer.parentNode;
    		lefieldset.removeChild(le_calque_a_supprimer);
     
    	}
     
    	calque.appendChild(champ_utilisation);
    	calque.appendChild(document.createElement('br'));
    	calque.appendChild(supprimer);
    	calque.appendChild(document.createElement('br'));
    	calque.appendChild(document.createElement('br'));
     
    	nom_fieldset.appendChild(calque);
    }

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form action='./viewer.php' method='get'>
    	<fieldset id='choix'>
    		<legend>VOS BRUTES</legend><br />
    		<input type='button' value='Ajouter' onclick='ajouter()' /><br /><br />
    		<input type="text" id="brute_1" class="monInput" name="brute_1" value="Brute"/><br /><br />
    	</fieldset>
    <button class="go" type="submit"></button></form>

    Je pense qu'il faut donc que le script fasse:

    Récupérer le dernier ID (le plus bas) qui commence par "brute_", ajouter 1 au chiffre trouvé ( var i2 = i + 1; ) et créer une nouvel ligne avec cet ID.

    Merci d'avance !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonsoir,
    comme est constituer ton document, il te suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      var Nbr = nom_fieldset.getElementsByTagName('input').length;
      alert("brute_" +Nbr/2);
    juste en dessous de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var nom_fieldset = document.getElementById('choix');
    de ta fonction pour récupérer la dernière ID utilisé, mais comme tu as le droit de supprimer une ligne, cela ne fonctionnera que si il y a des ajouts. Il est peut donc être souhaitable de gérer un tableau d'ID/NAME.

    La question à se poser est as tu besoin d'une ID pour chaque contrôle, un name du type brute[] te permettrais de récupérer coté serveur un tableau.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    C'est un faux formulaire, les infos vont etre utilise par du PHP qui affichera (ou pas) le code source de la page des brutes, donc je sais pas se qui est le mieux tu me conseilles quoi ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    si les ID ne te servent à rien, à prendre au sens HTML bien sûr, autant ne pas les mettre et attribuer un NAME brute[] à chaque nouveau contrôle.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    champ_utilisation.name = "brute[]";

    Coté PHP, par exemple, tu récupères
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    echo 'Liste des brutes !<ul>';
    foreach($_POST['brute'] as $brute){
      echo '<li>'.$brute.'</li>';
    }
    echo '</ul>';
    ?>
    Autre chose comme tu as la référence à la DIV ajoutée, tu peux simplifier la fonction de suppression comme suit,
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    supprimer.onclick = function() {
      calque.parentNode.removeChild( calque);
    }

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    Merci pour les codes, ca fonctionne bien ! Mais serait-t-il possible de les avoirs dans le lien pour que l'utilisateur n'est pas besoin de retaper les noms à chaque fois ?
    J'ai essayé de modifier ton POST en GET mais sa ne fonctionne pas

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    1/ erreur dans le code il faut lire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($_POST['brute'] as $brute){
    2/ pas compris
    Mais serait-t-il possible de les avoirs dans le lien pour que l'utilisateur n'est pas besoin de retaper les noms à chaque fois ?

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

Discussions similaires

  1. [débutant] les quotes " et ' pour 3 codes différents
    Par Christophe93250 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/03/2007, 21h11
  2. [MySQL] formulaire et double quotes
    Par matio dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/03/2007, 17h34

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