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 :

Modifier un <option> à partir de son value et du name du select


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 36
    Par défaut Modifier un <option> à partir de son value et du name du select
    Bonjour,

    Je cherche le moyen de travailler sur un élément d'une liste, le modifier pour qu'il soit sélectionné. Seul soucis, pour l"identifier, je ne connais que sa valeur (value) et le nom du select parent.

    Voilà ce que j'ai essayé jusqu'ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('question_suivante_3').item(0).getElementByValue('savaleur').setAttribute("selected","true");
    Bien sûr, ça ne fonctionne pas vu que getElementByValue n'est pas une fonction qui existe, mais ça représente bien ce que je veux faire.

    Après, je pourrais toujours ajouter un id à chacun de mes option, mais ça serait un peu porkyland non ?

    En vous remerciant par 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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('question_suivante_3')[0]
    mais il va falloir boucler sur les options

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function selectedValue(val){
    var monselect =document.getElementsByName('question_suivante_3')[0]
    opts=monselect.options;
    ol=opts.length;
    for(i=0;i<ol;i++){
     if(opts[i].value==val){monselect.selectedIndex=i}
    }
    }
    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 Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Je pense que tu es obligé de parcourir l'ensemble des elements <option> de ton select pour déterminer celui qui correspond à ton value afin de pouvoir définir son attribut à 'selected'.

    Le grand Spacefrog m'a devancer et de surcroit t'a donné le code (donc respect)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 36
    Par défaut
    Merci, ça marche très bien avec Firefox.
    Par contre, avec IE...

    Peut-être que ça vient du fait que les option soient compris dans des optgroup. Ou peut-être que le problème vient d'ailleurs dans le code.

    Un petit exemple de select :
    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
    <select name="question_suivante_1">
    	<optgroup label="Groupe 1">
    		<option value="1-1">Question 1</option>
    		<option value="1-2">Question 2</option>
    		<option value="1-3">Question 3</option>
    		<option value="1-4">Question 4</option>
    		<option value="1-5">Question 5</option>
    		<option value="1-6">Question 6</option>
    		<option value="1-7">Question 7</option>
    		<option value="1-8">Question 8</option>
    		<option value="1-9">Question 9</option>
    		<option value="1-10">Question 10</option>
    		<option value="1-11">Question 11</option>
    	</optgroup>
    	<optgroup label="Groupe 2">
    		<option value="2-1">Question 1</option>
    		<option value="2-2">Question 2</option>
    		<option value="2-3">Question 3</option>
    		<option value="2-4">Question 4</option>
    		<option value="2-5">Question 5</option>
    	</optgroup>
    	<optgroup label="Groupe 3">
    		<option value="3-1">Question 1</option>
    		<option value="3-2">Question 2</option>
    	</optgroup>
    	<option selected="true" value="NULL">Fin</option>
    </select>
    Bien sûr c'est un exemple, ça peut très bien changer selon les données de la BDD.

    J'ai cru un moment que le selected="true" mis sur le dernier élément de la liste aurait pu être la cause (parce qu'il serait "plus fort" que le selected que l'on mettrais ensuite sur un autre élément), mais j'ai essayé de le virer et le bon élément n'était toujours pas sélectionné.

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     if(opts[i].value==val){opts[i]..selected=true;}

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 36
    Par défaut
    Matthieu2000, ce n'est pas mieux. Pas pire non plus. C'est exactement pareil en fait (en résultat visuel j'entends).

    Entre temps j'ai essayé en mettant un id à chaque option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('question_suivante_3')[0].selectedIndex = document.getElementById('Id').index;
    Mais ça ne fonctionne toujours pas ! C'est désespérant...

    Le pire c'est que ce code est dans une boucle qui sert à afficher plusieurs lignes. Et, vu qu'il y a erreur, la boucle s'arrête à la première ligne. Et vu que je n'ai jamais entendu parler de debugger sur IE...

    En plus j'ai la version 7, j'ose même pas imaginer ce que ça donnerait avec une version antérieure. Bref, Internet Explorer j'te love.

Discussions similaires

  1. Modifier valeur scrollbar à partir de son container
    Par diophantes dans le forum ImageJ
    Réponses: 2
    Dernier message: 02/10/2008, 19h22
  2. modifier l'objet d'une page à partir de son iframe
    Par jamy1664 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/07/2007, 16h29
  3. Trouver le jour de l'année à partir de son numéro
    Par Nounours666 dans le forum C++Builder
    Réponses: 7
    Dernier message: 09/01/2006, 13h20
  4. Réponses: 3
    Dernier message: 24/09/2004, 21h21
  5. [VB.NET] Obtenir un Char a partir de son ASCII Decimal ...
    Par maitrebn dans le forum Windows Forms
    Réponses: 8
    Dernier message: 09/09/2004, 14h49

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