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 :

enlever des éléments de formulaire dynamiquement


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut enlever des éléments de formulaire dynamiquement
    Bonjour,

    Sur ma page html j'ai un formulaire classique et un menu. Si l'utilisateur choisis une certaine option dans ce menu, les informations entrées par l'utilisateur dans le formulaire sont ignorées et une certaine page est chargée.
    Je voudrais que dans ce cas là, seuls deux elements soient postés: mon input name="action" et mon input name="info".
    Je pensais supprimer dynamiquement les éléments juste avant le submit (qui a lieu lorsqu'on clique sur l'option du menu)
    Quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(var i = 0; i < document.forms[0].elements.length; i++)
    {
      if(document.forms[0].elements[i].name != 'action' && document.forms[0].elements[i].name != 'info')
      {
         document.forms[0].removeElement(i);
      }
    }
    document.forms[0].submit();
    La fonction removeElement n'existe pas, mais c'est pour donner une idée.
    Il faut aussi savoir que
    - le nombre d'éléments de la page est variable
    - je ne peux pas attribuer d'id aux éléments de la page (sauf à action et info si ça peut aider)

    Si vous connaissez une solution...

    Merci d'avance

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    removeChild en ayant repéré l'indice


    PS: pense aux balises code ...
    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 à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse. Peux tu développer?

    D'après le site de mozilla, il faut passer un id à removeChild() ce que je ne peux pas faire puisque soit je ne connais pas les id, soit les éléments n'en ont pas.

  4. #4
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    tu n'est pas obligé de passer un id tu peux passer un objet ...

    il te suffit de scanner tous les elements du form ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[0].Elements
    dans une boucle et de teste légalité par rapport à l'element que tu veux supprimer ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (document.forms[0].Elements[i]==Obj){
        document.forms[0].removeChild(document.forms[0].Elements[i])
    }
    pas testé mais ça devrait fonctionner ...
    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 !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Je viens de tester ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(var i = 0; i < document.forms[0].elements.length; i++) 
    { 
      if(document.forms[0].elements[i].name != 'action' && document.forms[0].elements[i].name != 'info')
      { 
           document.forms[0].removeChild(document.forms[0].elements[i]);
      } 
    } 
    document.forms[0].submit();
    et safari m'annonce une DOM Exception 8 à la ligne du removeChild

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Quelqu'un a une idée?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Il semblerait que le removeChild ne fonctionne pas si l'élément à supprimer n'est pas direct childNode du FORM, c'est à dire s'il y a des "child" intermédiaires (div ou autres).

    Du coup, je ne sais pas comment accéder autrement aux éléments d'un formulaire

  8. #8
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ben fait le removeChild à partir du parent de l'élément ...
    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. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    C'est ce que j'étais en effet en train de tester:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(var i = 0; i < document.forms[0].getElementsByTagName('input').length; i++)
    {
        if(document.forms[0].getElementsByTagName('input')[i].name != "action") 
        {
            document.forms[0].getElementsByTagName('input').parentNode.removeChild(document.forms[0].getElementsByTagName('input')[i]);
        }
     
    }
    Ca fonctionne bien.

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

Discussions similaires

  1. Disabled sur des éléments de formulaire sous IE
    Par vince351 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/04/2009, 23h23
  2. [DOM] Accéder à des éléments du formulaire
    Par riete dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 17/03/2009, 17h47
  3. [RegEx] Enlever des éléments appartenant à une chaine
    Par namstou3 dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2008, 13h55
  4. Enlever des éléments d'IE
    Par gwadakillah dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 22/06/2006, 17h10
  5. [Collections]enlever des éléments répétés dans une ArrayList
    Par apan dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 23/03/2006, 13h28

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