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 :

Retirer un champs dans un formulaire après clic Bouton


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2021
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Retirer un champs dans un formulaire après clic Bouton
    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
     
    <script>
    var i = 1;
    function textBoxCreateEmail(){
     
    var y = document.createElement("INPUT");
    y.setAttribute("type", "text");
    y.setAttribute("Name", "email_" + i);
    y.setAttribute("id", "email_" + i);
    document.getElementById("new_email").appendChild(y);
     
    var z = document.createElement("INPUT");
    z.setAttribute("type", "button");
    z.setAttribute("name", "emails_" + i);
    z.setAttribute("id", "emails_" + i);
    z.setAttribute("value", "Retirer");
    document.getElementById("new_email").appendChild(z);
     
    i++;
    }    
    </script>         
     
    <input type="text" id="email" name="email">
    <div id="new_email"></div>
    <button onclick="textBoxCreateEmail()">Ajouter</button>


    Bonjour

    Je souhaiterais donner la possibilité de supprimer un champs après ajout. Pour cela, j'affiche un bouton "Retirer". Seulement, je ne vois pas comment procéder pour retirer le champs et le bouton...

    Quelqu'un aurait-il une piste ?

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 465
    Points : 4 651
    Points
    4 651
    Par défaut
    ajoute ca a la fin de ta function
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    z.addEventListener('click', () => {
      y.remove();
      z.remove();
    });
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    • on n'a pas besoin d'autant d'attributs.
    • ni de créer des "name" différents
    • ni de i

    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
      function textBoxCreateEmail(){
     
        var y = document.createElement("input");
        y.setAttribute("type", "text");
        y.setAttribute("name", "email[]");
        document.getElementById("new_email").appendChild(y);
     
        var z = document.createElement("input");
        z.setAttribute("type", "button");
        z.setAttribute("value", "X");
        document.getElementById("new_email").appendChild(z);
     
        z.addEventListener('click', () => {
          y.remove();
          z.remove();
        });
      }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="text" id="email" name="email[]">
    <div id="new_email"></div>
    <button onclick="textBoxCreateEmail()">Ajouter</button>

    A NOTER :
    • name="email[]" : on récupèrera alors TOUS les emails dans un array via $_POST['email'] (PHP)

    [EDIT] Je viens de retrouver ce code, qui permet de cloner plusieurs champs :


  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 057
    Points : 44 589
    Points
    44 589
    Par défaut
    Bonjour,

    il y a plusieurs façons d'ajouter des éléments avec bouton de suppression.
    • Utilisation de innerHTML euh ! pardon j'ai rien dit
    • Utilisation des « templates string » pour la construction du HTML en utilisant la méthode insertAdjacentHTML pour l'injection dans le DOM.
    • Utilisation de <template> HTML avec ou sans clonage
    • Utilisation des méthodes traditionnelles createElement, append...plus verbeuses mais souvent plus abordables

    C'est cette dernière que tu as privilégié et c'est bien !

    Concernant l'ajout de tes éléments, dans ton cas un <input> et un <button>, une « pratique propre » est de mettre cela dans un « wrapper », il te suffit par la suite, lors du clic, de supprimer cet élément sans te soucier de plus.

    Exemple de code :
    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
    19
    20
    function ajouterElement() {
      const elemDest = document.getElementById("conteneur");
      const elemWrapper = document.createElement("P");
     
        // on met ce que l'on veut dedans
        elemWrapper.textContent = "Place pour d'autres éléments";
     
        // ajout du bouton de suppression
        const elemBtn = document.createElement("BUTTON");
        elemBtn.textContent = "x";
        // ajout action au clic
        elemBtn.addEventListener("click", () => {
          elemWrapper.remove();
        });
        // ajout du bouton au wrapper
        elemWrapper.append(elemBtn);
     
      // au final on ajout l'élément wrapper
      elemDest.append(elemWrapper);
    }
    Pour faire tourner ce code il te faut au minimun le HTML suivant:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <button id="btn-ajouter">Ajouter</button>
    <div id="conteneur">
      <!-- les éléments sera ajoutés ici -->
    </div>

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/04/2013, 02h35
  2. Effacer une partie de texte dans un champs
    Par futurist dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 09/06/2009, 15h58
  3. effacement d'un champ de texte au chargement la page
    Par kheiro dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/11/2007, 14h43
  4. [access] champs type text sur un pc blob sur un autre
    Par Harry dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/07/2004, 09h30
  5. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 18h54

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