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 :

[DOM] Rajout dynamique d'un element input


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut [DOM] Rajout dynamique d'un element input
    Bonjour,
    j'ai fais une fonction javascript qui rajoute un element input dans ma page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function CreatInputOrdon(chName, chId, chValue)
     {
     	var idForm = document.getElementById('div123');
     
     	var input = document.createElement("input");
     	input.name  = chName;
     	input.type  = "hidden";
     	input.id    = chId;
     	input.value = chValue;
     
     	idForm.appendChild(input);
     
     }
    elle rajoute l'élément input mais l'élément créé n'a pas de "name"
    le code suivant est créé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT id=cd0 type=hidden value=0>
    Avez vous déjà rencontré ce type de pb?
    Pouvez vous me dire s'il y a une anomalie que je ne vois pas dans la fonction?

    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    je crois me souvenir que c'est un des seul cas ou setAttribute soit de rigueur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.setAttribute("name","chName");

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    j'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.setAttribute("name","chName");
    malheureusement le pb est le même

    suite à un problème avec ma connexion ma discussion a été validé 2 fois j'ai pas réussi à le supprimer, désolé pour ça

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    essaye en mettant NAME en majuscule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    input.setAttribute("NAME","chName");
    testé sous ie7 et firefox

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    la classe
    ça marche avec NAME en majuscule
    fallait le savoir cette histoire de majuscule

    j'ai essayé avec le code suivant :
    ça marche aussi

    j'aurai jamais pensé au majuscule dans un cas comme celui là
    j'avais pas encore vu ça

    en tout cas merci les gars

  6. #6
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    arf je me rappelait qu'il y avait un truc vicieux ...
    le_chom

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    bonjour,
    j'ai réussi à avoir le "name" dans les input de type hidden créée dynamiquement avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.setAttribute("NAME","TEST");
    ou alors
    malgré le fait qu'il y a le "name" dans les elements input créés, je n'arrive pas à atteindre l'objet avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementsByName('TEST')[0].value);
    javascript me renvoie un message d'erreur disant que l'objet n'exsiste pas

    quand j'envoi le formulaire impossible de récupérer les éléments input créé dynamiquement

    Avez vous une solution pour ce type de problème?

    j'ai été obligé d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var idForm = document.getElementById('div123');
    idForm.insertAdjacentHTML("afterBegin", "<input type='hidden' name='"+chName+"' id='"+chId+"' value='"+chValue+"'>");
    avec le code ci dessus il y a aucun problème.

  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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Lui ayant donné un id ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementsById('chId').value);
    a priori cela fonctionne

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Lui ayant donné un id ...

    Code :

    alert(document.getElementsById('chId').value);

    a priori cela fonctionne
    je suis d'accord ça marche, je peux accèder de cette manière aussi à l'objet
    mais le gros problème c'est surtout lors de l'envoi du formulaire les élements input rajouté avec javascript(methode DOM) sont null....

    c'est assez bizzard puisque l'element input à bien été rajouté

  10. #10
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    même avec NAME en majuscule ? je croyais que cela solutionnait le problème ???

  11. #11
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Question bète , mais lorsque que tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.setAttribute("NAME","TEST");
    tu changes "TEST" à chaque fois ??
    car sinon tu dois utiliser un tableau donc au lieu de "TEST", "TEST[]" ...
    Tu récupères de quel façon les informations postées ?

  12. #12
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Bon ben je vais mettre tout le monde d'accord ...
    En plus j'ai honte parceque j'ai déja croisé ce problème et déja résolu ...
    Mais bon vous verrez quand on vieillit on perd la mémoire ...

    voici la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var plop =document.createElement("<input name='chName' />");
    Et la il reconnait direct le name dans la page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementsByName('chName')[0].value)
    et il passe le champs lors du submit ...
    ça reste de l'ajout DOM et c'est crossbrowser

  13. #13
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    lol . . .
    Donc au final tu nous confirme que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    input.setAttribute("NAME","TEST");
    ...
    ne permet pas de récupèrer les informations posté ?

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Question bète , mais lorsque que tu fais :

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.setAttribute("NAME","TEST");
    tu changes "TEST" à chaque fois ??
    car sinon tu dois utiliser un tableau donc au lieu de "TEST", "TEST[]" ...
    Tu récupères de quel façon les informations postées ?
    non "TEST" ne change pas je récupère "TEST" avec java dans un tableau (String [])

    je vais de suite tester la solution de SpaceFrog

  15. #15
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Extrait de MSDN
    The NAME attribute cannot be set at run time on elements dynamically created with the createElement method. To create an element with a name attribute, include the attribute and value when using the createElement method.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    efficace la solution
    ça marche nikel....

    merci

    ah la bonne librairie MSDN....je l'avais un peu oublié

  17. #17
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut

    J'ai collé un truc dans les contributions.
    Merci à vous d'avoir fait progressé la science ^^

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

Discussions similaires

  1. dom size d'un element input
    Par r83 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/10/2009, 22h33
  2. [DOM] Ajouter dynamiquement des champs inputs
    Par bobic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/05/2008, 13h10
  3. [DOM] supprimer un element input de type hidden
    Par typikal dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/01/2008, 16h45
  4. [DOM] Génération dynamique fichier xml
    Par Fabouney dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/10/2005, 09h45
  5. Réponses: 4
    Dernier message: 05/11/2004, 14h58

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