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 :

Obtenir valeur d'un élément fils dans form


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut Obtenir valeur d'un élément fils dans form
    Bonjour,

    J'aurai souhaité obtenir la valeur de l'élément fils d'un ID...
    le mieux c'est que j'explique en code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <label id="parent"><input type="text" value="toto" name="test" /></label>
    Donc il faudrait que je puisse récupérer la valeur "toto" en cherchant par l'id "parent".
    un truck dans le style document.getElementById('parent').getElementByTagName('input')[0].value
    Je ne sais pas si j'ai été assez claire...
    Je vous en remerci d'avance.

    Edit : Je ne désire pas mettre un id directement sur l'input, car ca n'ira pas pour la suite de mon code...
    Sinon, le sens inverse peut m'être utile, un id dans l'input, et que l'on puisse changer la class CSS du Label...

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    à quoi sert ce <label> ?

    Ce n'est pas du tout comme ça que cet objet s'utilise : c'est une étiquette, pas un conteneur => utilise plutôt un span ...

    Mais pour répondre quand même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('parent').getElementsByName('test')[0]
    A+

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    getElementByTagName
    avec un s

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut
    Salut,
    merci de ta réponse.
    le <label> conteneur sers à simplifier le code au lieu de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <label for="test">Nom :</label> <input type="text" id="test" name="test" />
    tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <label>Nom : <input type="text" id="test" name="test" /></label>
    Ca revient au même

    M'enfin je pouvais mettre aussi div span etc... mais c'était juste pour l'exemple..

    Le getElementByName ne fonctionne pas, par contre celle de Matthieu2000 marche !
    effectivement j'ai oublié le s.
    Merci

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par shadowbob Voir le message
    Le getElementByName ne fonctionne pas, par contre celle de Matthieu2000 marche !
    effectivement j'ai oublié le s.
    Dans getElementsByName aussi

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Dans getElementsByName aussi
    Je me suis mal réveillé aujourd'hui
    Ca fonctionne, mais c'est pas ce que je veut car ca oblige qu'un seul input, alors que moi je veut que ca puisse intégrer plusieurs input... mais bon ca fonctionne par le tag
    merci encore

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par shadowbob Voir le message
    ca oblige qu'un seul input, alors que moi je veut que ca puisse intégrer plusieurs input...
    Tu confonds pas les 2 là ?

    Ce problème sera le même avec les 2 instructions ...

    L'essentiel étant que ça fonctionne

    A+

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Tu confonds pas les 2 là ?

    Ce problème sera le même avec les 2 instructions ...

    L'essentiel étant que ça fonctionne

    A+
    le getElementsByTagName permets d'en prendre plusieurs, alors que le getElementsByName on peut en prendre qu'un seul.

    je te montre ma source


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    HTML :
    ...
    <script type="text/javascript">
    	var init_var = new Array('test_checkbox');
     
    	var text_erreur = "Vous devez compléter tous les champs en rouge";
    </script>
    ...
    <div id="test_checkbox">
    	<label><input type="checkbox" name="test_checkbox" /> Test de Checkbox un des 2 obligatoire</label><br />
    	<label><input type="checkbox" name="test_checkbox" /> Test de Checkbox un des 2 obligatoire</label>
    </div>
    ...
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    javascript.js :
     
     
    function getId(lid)
    {
    	return document.getElementById(lid);
    }
     
     
    function verif_form(obligatoires)
    {
    	var valide;
    	var erreur = false;
    	for(var i = 0; i < obligatoires.length; i++)
    	{
    		var obl = getId(obligatoires[i]).getElementsByTagName('input');
     
    		valide = 0;
    		for (var j = 0; j < obl.length; j++)
    		{
    			if ((obl[j].type == 'text' || obl[j].type == 'hidden') && obl[j].value) valide = 1;
    			if (obl[j].type == 'checkbox' && obl[j].checked) valide = 1;
    			if (obl[j].type == 'radio' && obl[j].checked) valide = 1;
    		}
     
    		if (!valide)
    		{
    			getId(obligatoires[i]).className = 'erreurMenu';
    			erreur = true;
    		}
    		else
    		{
    			getId(obligatoires[i]).className = '';
    		}
    	}
     
    	if (erreur)
    	{
    		alert(text_erreur);
    	}
    	else
    	{
    		document.menu.submit();
    	}
    }
    Ce bout de code sers dans un formulaire à indiquer tout ce qui se place dans un conteneur de l'id voulu d'être obligatoire... Tiens je vient de me rendre compte que j'ai oublié les select

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par shadowbob Voir le message
    le getElementsByTagName permets d'en prendre plusieurs, alors que le getElementsByName on peut en prendre qu'un seul.
    Non : l'un cible des tag, l'autre cible des name.
    Les 2 retournent un tableau d'éléments (d'où les "s") ...
    Citation Envoyé par shadowbob Voir le message
    Tiens je vient de me rendre compte que j'ai oublié les select
    Avec getElementsByTagName('input') ça va être chaud

    En ciblant les name tu n'aurais pas à te poser la question du type de l'élément

    A+

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Non : l'un cible des tag, l'autre cible des name.
    Les 2 retournent un tableau d'éléments (d'où les "s") ...

    Avec getElementsByTagName('input') ça va être chaud

    En ciblant les name tu n'aurais pas à te poser la question du type de l'élément

    A+
    Exacte !
    tu marque un point la !
    et je ne savais pas pour ton tableau... merci pour l'info !
    mais pour le select j'ai triché ! j'incrémente un input hidden.
    Mais je prends en note pour une prochaine fois ton astuce !

    Edit : je viens de me rendre compte d'un truck... si je fais un getElementsByName, il faut que je lui indique 1 seul nom pour plusieurs input... et après mon formulaire sera faussée...

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

Discussions similaires

  1. [Toutes versions] Recuperer la valeur de l'élément selectionné dans une liste déroulante
    Par camole88 dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/06/2019, 12h00
  2. Réponses: 0
    Dernier message: 12/11/2010, 17h49
  3. Réponses: 6
    Dernier message: 02/11/2006, 18h04
  4. [MVC] Conserver les valeurs d'éléments Set dans un POJO
    Par kobee dans le forum Spring Web
    Réponses: 1
    Dernier message: 10/09/2006, 19h45
  5. Réponses: 4
    Dernier message: 26/04/2006, 17h43

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