Partage
  • Partager sur Facebook
  • Partager sur Twitter

Radio button et Select disabled

Sujet résolu
    12 juillet 2011 à 9:13:43

    Bonjour,

    Je sais que le sujet a déjà été abordé, mais je n'arrive pas à résoudre mon problème.
    Je dispose de 2 boutons radio liés à 2 select :
    Trier par :
    <input type="radio" name="choix" id="date" value="date" onClick="grise(this.form.personne);" />Date
        <select name="n_demande" id="n_demande">
            <option value="none">- - -</option>
            <!--dates-->
        </select>
    <br /><br />
                
    <input type="radio" name="choix" id="personne" value="personne" onClick="grise(this.form.date);" checked />Personne
        <select name="n_maintenance" id="n_maintenance">
            <option value="none">- - -</option>
            <!--personnes-->
        </select>
    <br /><br />
    


    Je souhaite que le 1e select soit disponible et le 2e disabled quand le bouton radio "date" est coché ; et vice-versa.

    Voici ma fonction javascript :
    function grise(elem){
        if (elem[0].checked){
            document.f_devis.n_demande.disabled=false;
            document.f_devis.n_maintenance.disabled=true;
        }
        else{
            document.f_devis.n_demande.disabled=true;
            document.f_devis.n_maintenance.disabled=false;
        }
    }
    


    J'ai l'impression que ce code est bancal (je ne sais plus où je l'ai trouvé :euh: ) et je n'arrive pas à en faire quelque chose !

    Merci par avance pour votre aide ^^
    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2011 à 10:30:24

      Ton onclick n'est pas bon, tu appelles 'date' et 'personne' alors que tes boutons radio s'appellent 'choix' :
      <input type="radio" name="choix" id="date" value="date" onClick="grise(this.form.choix);" />Date
          <select name="n_demande" id="n_demande">
              <option value="none">- - -</option>
              <!--dates-->
          </select>
      <br /><br />
                  
      <input type="radio" name="choix" id="personne" value="personne" onClick="grise(this.form.choix);" checked />Personne
          <select name="n_maintenance" id="n_maintenance">
              <option value="none">- - -</option>
              <!--personnes-->
          </select>
      
      • Partager sur Facebook
      • Partager sur Twitter
        12 juillet 2011 à 10:41:20

        En effet, merci.

        Mais cela ne résout pas tout :
        Au chargement de la page, aucune liste n'est grisée.
        Si je clique sur le premier bouton, la 2e liste se grise ce qui est bien, mais est définitivement inaccessible, quelque soit le bouton coché ensuite.
        La 1e liste est quant à elle toujours disponible.
        • Partager sur Facebook
        • Partager sur Twitter
          12 juillet 2011 à 13:28:00

          Si tu veux que la liste soit grisée au démarrage, il faut le lui indiquer.
          Maintenant, pour que ça fonctionne il faut bien sûr que tout ça soit dans un <form> :
          <form name="f_devis">
          <input type="radio" name="choix" id="date" value="date" onClick="grise(this.form.choix);"/>Date
              <select name="n_demande" id="n_demande" disabled="disabled" >
                  <option value="none">- - -</option>
                  <!--dates-->
              </select>
          <br /><br />
                      
          <input type="radio" name="choix" id="personne" value="personne" onClick="grise(this.form.choix);" checked="checked" />Personne
              <select name="n_maintenance" id="n_maintenance">
                  <option value="none">- - -</option>
                  <!--personnes-->
              </select>
          </form>
          

          J'ai testé, ça fonctionne bien.
          • Partager sur Facebook
          • Partager sur Twitter
            12 juillet 2011 à 13:47:55

            Cette solution marche en effet très bien. Je me permet quand même de venir mettre mon grain de sel.
            Les navigateurs récents enregistre les valeurs des <input>.
            Si tu sélectionne Date et que tu recharge, Date sera toujours sélectionné mais la liste, elle, sera grisée.

            Je te conseil de garder le même principe mais de mettre les attributs disabled en dynamique.

            du genre :
            window.onload = function(){
              var radios = document.getElementsByName("choix");                 // récupération des radio
              for(i=0;i<radios.length;i++){                                     // boucle sur tous
                if(radios[i].checked)                                           // si le radio est coché, 
                  document.getElementById("n_" + radios[i].id).disabled = true; // griser le select correspondant
              }
            }
            


            Bon évidemment avec tes id, ça marche pas. Mais t'a le principe.
            • Partager sur Facebook
            • Partager sur Twitter
              12 juillet 2011 à 14:20:58

              Merci à tous les 2, je corrigerai mon code dans l'après-midi ^^
              • Partager sur Facebook
              • Partager sur Twitter

              Radio button et Select disabled

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown