Function pour afficher plusieurs checkbox ayant le même nom

Résolu
danielos77 Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -  
danielos77 Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à toutes et à tous,

J'ai ce petit script dont le but devrait être de récupérer les valeurs des checkbox et de les afficher (val1 ; val2 ; ..) mais il ne doit pas fonctionner car la popup ne s'affiche pas... donc la variable freqused ne doit rien contenir non plus. Cette fonction devrait être appelée à chaque fois qu'un choix est fait dans une checkbox afin de modifier le contenu de la variable.

<script type="text/javascript">
function checkbox() {
    var freqused = document.getElementsByName("FreqUsed[]");
    var i;
    for (i = 0; i < x.length; i++) {
      freqused[i] == (document.forms["0"].elements["FreqUsed[]].value"+" ; ");
      }
w=open("",'popup','width=250,height=150,toolbar=no,scrollbars=auto,resizable=yes');
w.document.write(freqused);      
 }
</script>


Le code des checkbox est le suivant :

<p>
 <LABEL for="FreqUsed">27 Mhz :</LABEL>
 <input type="checkbox" name="FreqUsed[]" value="27" onclick="function checkbox()" />     
 <LABEL for="Freq27">Fréquence utilisée :</LABEL>
 <input type="text" name="Freq27" id="Freq27" size="10" style="text-align:right" pattern="[0-9,]+" placeholder="00,0000" /> MHz 
 <br>
 <LABEL for="FreqUsed">41 Mhz :</LABEL>
 <input type="checkbox" name="FreqUsed[]" value="41" onclick="function checkbox()" />    
 <LABEL for="Freq41">Fréquence utilisée :</LABEL>
 <input type="text" name="Freq41" id="Freq41" size="10" style="text-align:right" pattern="[0-9,]+" placeholder="00,0000" /> MHz 
 <br>
 <LABEL for="FreqUsed">72 Mhz :</LABEL>
 <input type="checkbox" name="FreqUsed[]" value="72" onclick="function checkbox()" />    
 <LABEL for="Freq72">Fréquence utilisée :</LABEL>
 <input type="text" name="Freq72" id="Freq72" size="10" style="text-align:right" pattern="[0-9,]+" placeholder="00,0000" /> MHz 
 <br>
 <LABEL for="FreqUsed">2,4 Ghz :</LABEL>
 <input type="checkbox" name="FreqUsed[]" value="2400" onclick="function checkbox()" />
 <br>
</p>


Si une bonne âme pouvait me venir en aide... Merci d'avance
Daniel

Configuration: Windows / Firefox 76.0

4 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    ça devrait ressembler à un truc du genre
    function checkbox() {
        var x = document.getElementsByName("FreqUsed[]");
        var freqused;
        var i;
        for (i = 0; i < x.length; i++) {
          freqused += x[i].value +" ; ");
        }
        w=open("",'popup','width=250,height=150,toolbar=no,scrollbars=auto,resizable=yes');
        w.document.write(freqused);      
     }
    

    1
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Voici le code corrigé

    <html>
      <head>
        <title> test </title>
        <meta charset='utf-8'>
      </head>
      <body>
        <p>
           <LABEL for="FreqUsed">27 Mhz :</LABEL>
           <input type="checkbox" name="FreqUsed[]" value="27" onclick="checkbox()" />     
           <LABEL for="Freq27">Fréquence utilisée :</LABEL>
           <input type="text" name="Freq27" id="Freq27" size="10" style="text-align:right" pattern="[0-9,]+" placeholder="00,0000" /> MHz 
           <br>
           <LABEL for="FreqUsed">41 Mhz :</LABEL>
           <input type="checkbox" name="FreqUsed[]" value="41" onclick="checkbox()" />    
           <LABEL for="Freq41">Fréquence utilisée :</LABEL>
           <input type="text" name="Freq41" id="Freq41" size="10" style="text-align:right" pattern="[0-9,]+" placeholder="00,0000" /> MHz 
           <br>
           <LABEL for="FreqUsed">72 Mhz :</LABEL>
           <input type="checkbox" name="FreqUsed[]" value="72" onclick="checkbox()" />    
           <LABEL for="Freq72">Fréquence utilisée :</LABEL>
           <input type="text" name="Freq72" id="Freq72" size="10" style="text-align:right" pattern="[0-9,]+" placeholder="00,0000" /> MHz 
           <br>
           <LABEL for="FreqUsed">2,4 Ghz :</LABEL>
           <input type="checkbox" name="FreqUsed[]" value="2400" onclick="checkbox()" />
           <br>
        </p>
        <script type="text/javascript">
      function checkbox() {
        var x = document.getElementsByName("FreqUsed[]");
        var freqused;
        var i;
        for (i = 0; i < x.length; i++) {
          // si la case est cochée
          if(x[i].checked  == true ){
            var chkvalue = x[i].value;
            //si la checkbox a bien une value
            if(typeof(chkvalue)!="undefined" && chkvalue!=null ){
              console.log('Checkbox value ',chkvalue );
              var inpVal = "";
              var inp = document.getElementById('Freq' + chkvalue ); // input correspondant à la checkbox
              
              // Si l'input existe
              if(typeof(inp) !='undefined' && inp !=null){
                inpVal = inp.value;
              }
              freqused += chkvalue +": " + inpVal + "; "; // on concatène l'id de la checkbox et la value de l'input correspondant
            }
          }
        }
        w=open("",'popup','width=250,height=150,toolbar=no,scrollbars=auto,resizable=yes');
        w.document.write(freqused);      
      }
          
        </script>
      </body>
    </html>
    
    

    1
  3. danielos77 Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   2
     
    Bonjour Jordane45,

    [tu es sur tous les fronts ;-)]
    Bon, sinon, soit je m'y prend comme une branque (je que je pense) soit il y a un pb dans le script car lorsque je clique sur une checkbox, il ne se passe rien. Pas d'affichage de la popup. snif.

    Je dois bien mettre le code dans le head ?
    Daniel
    0
  4. danielos77 Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   2
     
    Époustouflant d'efficacité.
    Merci 1000 fois.
    0