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 :

Ajout / Suppresion de champs


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut Ajout / Suppresion de champs
    Salut tout le monde

    voilà j'ai besoin, dans un formulaire, de permettre l'ajout ou la suppression dynamiquement de champs.

    Le résultat que je chercher à atteindre est celui que l'on peut voir sur cette image

    http://win.eurohub.free.fr/tuto/lowid/freebox5.jpg

    j'ai essayer de commencer le script mais je me heurte à quelques problèmes


    voici le fichier js
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    var d,nb_lignes, nom_ligne,numero_ligne,boutton_supprimer,tr,td;
     
    function AddChamp(){
    d=document.getElementById('ligne_serveur');
    //Compte le nombre d'éléments
    nb_lignes=d.getElementsByTagName('input');
     
    tr=document.createElement('tr');
    tr.setAttribute('id','tr_'+nb_lignes.length);
    d.appendChild(tr);
     
    d=document.getElementById('tr_'+nb_lignes.length);
     
     
    numero_ligne=document.createElement('input');
    numero_ligne.setAttribute('type','text');
    numero_ligne.setAttribute('name','numero_ligne'+nb_lignes.length);
    numero_ligne.setAttribute('class','class="classinput_lsize"');
    d.appendChild(numero_ligne);
     
    boutton_supprimer=document.createElement('button');
    boutton_supprimer.setAttribute('value','supprimer');
    boutton_supprimer.setAttribute('onclick','removeElement("tr_'+nb_lignes.length+'")');
    d.appendChild(boutton_supprimer);
    }
    function removeElement(id) {
    	d = document.getElementById('ligne_serveur');
      var sup = document.getElementById(id);
      d.removeChild(sup);
    }
    Dans le corps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="ligne_serveur" style="margin-left:100px;width:200px">
    						</div>
    D'une part , si je fait un getElementsByTagName('tr') ça ne fonctionne pas, ce qui va m'embêter quand j'aurais plusieurs champs input. Ensuite ma fonction supprimer me renvoie une erreur également

    Erreur*: uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER)" nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)" location: "JS frame :: http://162.38.113.245/lmb/profil_adm...erveur_voip.js :: removeElement :: line 39" data: no]
    Si vous avez des idées ou des conseils pour me permettre d'arriver au résultat que je désire, je les prendrais avec volontiers.

    Merci d'avance


    Yann

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut Rows Rolls
    Bonjour,

    d est un div et non une table. Les <tr> s'accroche à des <table>.
    Si:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    d.getElementsByTagName('tr')
    ne fonctionne pas, vous pouvez essayer (une fois que vous aurez une table):


  3. #3
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    ce post devrait t'interesser

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut
    le div est dans une table. Je l'ai mis en place au départ car mon but était de compter le nombre de tr dans ce div.(car il y a d'autre champ dans le formulaire).

    Je regarde le lien dessuite

  5. #5
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut A Taaaaable! Mimi, il est 8h... Mais t'avais dit qu'on mangerait des Knaaackiii
    Le div à beau être dans une table, il n'empêche qu'on attache pas des <tr> à un div mais à une <table>.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut
    dans ce cas la, comment faire pour dire que je veux que le tr soit attacher à cette endroit? (appendChild attache à la fin il me semble)

  7. #7
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut And you wash, wash, wash. Threeee tiiime
    Hé bien... Pour différencier vos <tr>, vous pouvez leur ajouter un attribut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <tr att1>...</tr>
    <tr att1>...</tr>
    <tr att2>...</tr>
    <tr att2>...</tr>
    <tr att2>...</tr>
    <tr att2>...</tr>
    Ici vous avez deux ligne att1 et quatre lignes att2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var liste_tr = maTable.rows;
     
    if(liste_tr[0].getAttribute("att1") != null)
       alert("Youpiiiie");
    Enfin, j'espère.

    Mais l'appendChild du <tr> se fera bien sur une <table>.

    Sinon, faites plusieurs tables ?

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

Discussions similaires

  1. Probleme panneau de confi ajout/suppresion de programme
    Par lemotard dans le forum Windows XP
    Réponses: 4
    Dernier message: 03/06/2006, 21h39
  2. Réponses: 4
    Dernier message: 11/05/2006, 16h23
  3. ajout d'un champs input text dans un formulaire
    Par korrigann dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/04/2006, 15h45
  4. Ajout dynamique de champs de type file dans un formulaire !
    Par stitch dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/11/2005, 11h18
  5. Table Access : ajout d'un champ depuis VB6
    Par pcvesoul dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/09/2005, 09h14

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