Function pour afficher plusieurs checkbox ayant le même nom [Résolu]

Signaler
Messages postés
64
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
9 juin 2020
-
Messages postés
64
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
9 juin 2020
-
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

Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
2 842
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);      
 }

Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
2 842
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>


Messages postés
64
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
9 juin 2020
1
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
Messages postés
64
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
9 juin 2020
1
Époustouflant d'efficacité.
Merci 1000 fois.