Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1071 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Cacher un element en fonction d'un radiobutton

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cacher un element en fonction d'un radiobutton

n°2470556
davidmarli
Posté le 29-05-2024 à 22:09:39  profilanswer
 

Bonjour,
 
j'espère poster dans la bonne catégorie.
 
Je suis entrain de faire une page HTML qui contient 2 radiobutton.
Je voudrais cacher un input et afficher l'autre si le radiobutton1 est cliqué et inversement.
 
Quelqu'un peut-il me dire comment faire ?
 
Merci.
 

Code :
  1. <div class="row"> 
  2.                         <p>La récupération de la consommation de la maison se fait via : </p>
  3.                         <div class="form-check">
  4.                             <input class="form-check-input" type="radio" name="flexRadioPowerMaison" id="flexRadioHA1">
  5.                             <label class="form-check-label" for="flexRadioHA1">
  6.                               Home Assistant
  7.                             </label>
  8.                           </div>
  9.                           <div class="form-check">
  10.                             <input class="form-check-input" type="radio" name="flexRadioPowerMaison" id="flexRadioShelly1" checked>
  11.                             <label class="form-check-label" for="flexRadioShelly1">
  12.                               Shelly
  13.                             </label>
  14.                           </div>
  15. <div class="col-md-12 col-lg-6">
  16.                      
  17.                         <div class="input-group my-3" id="IPShelly1">
  18.                           <span class="input-group-text col-8" >IP du Shelly 1 (conso maison)</span>
  19.                           <input required pattern="^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$" type="text" class="form-control mr-3 col-4" id="IPShelly1" placeholder="192.168.1.XXX" aria-describedby="IPShelly1">
  20.                         </div>
  21.                                            
  22.                       <div class="input-group my-3" id="IPHA" >
  23.                         <span class="input-group-text col-8" >IP de Home Assistant</span>
  24.                         <input required pattern="^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$" type="text" class="form-control mr-3 col-4" id="IPHA" placeholder="192.168.1.XXX" aria-describedby="IPHA">
  25.                       </div>
  26.                      </div>


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
mood
Publicité
Posté le 29-05-2024 à 22:09:39  profilanswer
 

n°2470558
mechkurt
Posté le 29-05-2024 à 23:32:34  profilanswer
 

Tu as des solutions pure css mais il faut que le bloc a caché / découvrir soit placé au niveau html juste après l'input checkbox, comme ici par exemple :

Code :
  1. <style>
  2. input[type=checkbox]{
  3.     display: none;
  4. }
  5. input[type=checkbox]:checked ~ .remove-check{
  6.     display: none;
  7. }
  8. input[type=checkbox]:checked ~ #email{
  9.     display: block;
  10. }
  11. #email{
  12.     display: none;
  13. }
  14. </style>
  15. <label for="reveal-email" class="btn" style="width: 300px"> Sign Up</label>
  16. <input type="checkbox" id="reveal-email" role="button">
  17. <div id="email">
  18.     <form id="email-form" class="nice" action="" method="post">
  19.         <input class="input-text required email" type="text" name="EMAIL" id="id_email" placeholder="Email" />
  20.         <input type="hidden" name="name" id="id_name_email">
  21.         <a class="btn" >Apply</a>
  22.     </form>
  23. </div>


Source  : https://jsfiddle.net/nzcage/nvrgbj5q/
 
Sinon en JS avec ou sans Framework avec un listener sur l'input checkbox et des modification de display sur l'id ciblé comme ici :

Code :
  1. <script>
  2.     function showMe (box) {
  3.         var chboxs = document.getElementsByName("c1" );
  4.         var vis = "none";
  5.         for(var i=0;i<chboxs.length;i++) {
  6.             if(chboxs[i].checked){
  7.              vis = "block";
  8.                 break;
  9.             }
  10.         }
  11.         document.getElementById(box).style.display = vis;
  12.     }
  13. </script>
  14. <div id="div1" style="display:none">
  15. <table border=1 id="t1">
  16. <tr>
  17. <td>i am here!</td>
  18. </tr>
  19. </table>
  20. </div>
  21. <form>
  22. <input type="checkbox" name="c1" onclick="showMe('div1')">Show Hide Checkbox
  23. </form>


Source  : https://jsfiddle.net/mithunsatheesh/wwcRr/


---------------
D3
n°2470607
davidmarli
Posté le 30-05-2024 à 15:07:49  profilanswer
 

EDIT : mon premier message n'a pas été validé.
merci pour ton aide le code fonctionne bien.
 
En revanche, après essai j'ai un truc que je ne comprends pas.
 
Lorsque je lance le fichier les 2 input sont bien côte à côte
 
https://ibb.co/9cbPLkS
 
Je clique sur Home assistant : j'ai bien les 3 input qui apparaissent
 
https://ibb.co/9h9Rtkr
 
Si j'appuie de nouveau sur Shelly : les 2 input ne sont plus côte à côte !!!
 
https://ibb.co/zrnCSDr
 
Voici mon code source
 

Code :
  1. <body id="page-top">
  2. <!-- Page Wrapper -->
  3. <div id="wrapper">
  4.  
  5.     <!-- Sidebar -->
  6.   <ul class="navbar-nav bg-gradient-success sidebar sidebar-dark accordion" id="accordionSidebar">
  7.     <!-- Sidebar - Brand -->
  8.     <a class="sidebar-brand d-flex align-items-center justify-content-center" href="/">
  9.       <div class="sidebar-brand-icon">
  10.         <i class="bi bi-sun"></i>
  11.       </div>
  12.       <div class="sidebar-brand-text mx-3">Routeur Solaire</div>
  13.     </a>
  14.     <!-- Divider -->
  15.     <hr class="sidebar-divider my-0">
  16.       <!-- Nav Item - Dashboard -->
  17.       <li class="nav-item active">
  18.           <a class="nav-link" href="/">
  19.               <h6 class="font-weight-bold"><i class="fas fa-fw fa-tachometer-alt"></i> Tableau de bord</h6>
  20.           </a>
  21.       </li>
  22.    </ul>
  23. <div id="content-wrapper" class="d-flex flex-column">
  24. <!-- Begin Page Content -->
  25.   <div class="container-fluid">
  26.   <!-- Page Heading -->
  27.     <div class="d-sm-flex align-items-center justify-content-between mb-4">
  28.       <h1 class="h3 mb-0 text-gray-800">Configuration du Système</h1>
  29.     </div> 
  30.              
  31.     <p class="mb-4">Page de configuration du Routeur Solaire; Pensez à sauvegarder votre configuration après l'avoir appliquée.</p>
  32.      
  33.     <div class="col-xl-12 col-xxl-12">
  34.     <!-- Entete Cadre CONFIGURATION -->
  35.       <div class="card position-relative">
  36.         <div class="card-header py-3">
  37.           <h6 class="m-0 font-weight-bold text-primary">Configuration</h6>
  38.             <span id="saveform"></span>
  39.         </div>
  40.         <div class="card-body  shadow">
  41.           <div class="col col-12">
  42.             <form class="user" id="formulaire" method="post" action=""  >
  43.               <div class="container text-start">
  44.                
  45.                 <div class="row"> 
  46.                   <p>La récupération de la consommation de la maison se fait via : </p>
  47.                 </div>
  48.                 <div class="row"> 
  49.                   <div class="form-check">
  50.                     <input class="form-check-input" type="radio" style="margin-right:10px;" name="flexRadioConsoMaison" id="flexRadioConsoMaisonHA" onclick="DisplayInputConsoMaison()">
  51.                     <label class="form-check-label" style="margin-right:10px;" for="flexRadioConsoMaisonHA">Home Assistant</label>
  52.                   </div>
  53.                   <div class="form-check">
  54.                     <input class="form-check-input" type="radio"  style="margin-right:10px;" name="flexRadioConsoMaison" id="flexRadioConsoMaisonShelly" onclick="DisplayInputConsoMaison()" checked >
  55.                     <label class="form-check-label" for="flexRadioConsoMaisonShelly" style="margin-right:10px;">Shelly</label>
  56.                   </div>
  57.                 </div>
  58.            <!--       ligne pour SHELLY   -->
  59.                 <div class="row"  id="SHELLY_Input" >
  60.                   <div class="col-md-12 col-lg-6">
  61.                     <div class="input-group my-3" >
  62.                       <span class="input-group-text col-8" >IP du Shelly 1 (conso maison)</span>
  63.                       <input pattern="^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$" type="text" class="form-control mr-3 col-4" id="IPShelly1" placeholder="192.168.1.XXX" aria-describedby="IPShelly1">
  64.                     </div>
  65.                   </div>
  66.                   <div class="col-md-12 col-lg-6">
  67.                     <div class="input-group my-3" id="IPShelly1">
  68.                       <span class="input-group-text col-8" >emeter</span>
  69.                        <input type="text" class="form-control mr-3 col-4" id="EmeterShelly1" placeholder="0" aria-describedby="IPShelly1">
  70.                     </div>
  71.                   </div>
  72.                 </div>
  73.              
  74.                 <!--       ligne pour HOME ASSISTANT   -->
  75.                
  76.                 <div class="row" id="HA_Input" style="display:none">
  77.                   <div class="col-md-6 col-sm-12">
  78.                     <div class="input-group my-3" id="IPHA" >
  79.                       <span class="input-group-text col-8" >IP de Home Assistant</span>
  80.                       <input pattern="^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$" type="text" class="form-control mr-3 col-4" id="IPHA" placeholder="192.168.1.XXX" aria-describedby="IPHA">
  81.                     </div>
  82.                   </div>
  83.                   <div class="col-md-6 col-sm-12">
  84.                     <div class="input-group my-3" id="HASensor" >
  85.                       <span class="input-group-text col-8" >Nom du sensor</span>
  86.                       <input type="text" class="form-control mr-3 col-4" id="HASensor" placeholder="" aria-describedby="HASensor">
  87.                     </div>
  88.                   </div>
  89.                   <div class="col-md-6 col-sm-12"> 
  90.                     <div class="input-group my-3" id="HABearer" >
  91.                       <span class="input-group-text col-8" >Bearer HA</span>
  92.                       <input type="text" class="form-control mr-3 col-4" id="HABearer" placeholder="" aria-describedby="HABearer">
  93.                     </div>
  94.                    </div>
  95.                 </div>
  96.                  <!--       ligne pour SHELLY 2   -->   
  97.                 <div class="row">
  98.                   <div class="col-md-12 col-lg-6">
  99.                     <div class="input-group my-3" id="IPShelly2">
  100.                       <span class="input-group-text col-8" >IP du Shelly 2 (conso CE)</span>
  101.                       <input pattern="^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$" type="text" class="form-control mr-3 col-4" id="IPShelly2" placeholder="192.168.1.XXX" aria-describedby="IPShelly2">
  102.                     </div>
  103.                   </div>
  104.                   <div class="col-md-12 col-lg-6">
  105.                     <div class="input-group my-3" id="IPShelly1">
  106.                       <span class="input-group-text col-8" >emeter</span>
  107.                       <input type="text" class="form-control mr-3 col-4" id="EmeterShelly2" placeholder="1" aria-describedby="IPShelly1">
  108.                     </div>
  109.                   </div>
  110.                 </div>
  111.                
  112.                
  113.                 <input type="submit" value=" Application des parametres" class="btn btn-success btn-user btn-block col-4 mx-auto shadow h-100">
  114.                
  115.               </div>
  116.          
  117.              
  118.             </form>
  119.           </div> <!-- col col-12-->
  120.         </div><!-- class="card-body" -->
  121.       </div><!-- card position-relative -->
  122.     </div> <!--class="col-xl-12 col-xxl-12" -->
  123.    
  124.     <div class="col-lg-4 my-2 mx-auto">
  125.       <div class="card border-left-success shadow h-100 py-2">
  126.         <div class="card-body">
  127.           <div class="row no-gutters align-items-center">
  128.             <div class="col mr-2">
  129.             <!--<div class="text-xs font-weight-bold text-primary text-uppercase mb-1">Sauvegarder</div>
  130.               -->
  131.               <div class="h5 mb-0 font-weight-bold text-gray-800"><span id="save"   ><a href="#">SAUVEGARDER</a></span><br><span id="savemsg"></span>
  132.               </div>
  133.             </div>
  134.             <div class="col-auto">
  135.               <i class="fas fa-download fa-2x text-gray-300"></i>
  136.             </div>
  137.           </div>
  138.         </div>
  139.       </div>
  140.     </div>
  141.   </div> <!--class="container-fluid" -->
  142. </div> <!--<div id="content"> -->   
  143. </div>
  144.        
  145.     <script type='text/javascript'>
  146.     function DisplayInputConsoMaison () {
  147.       var chboxs = document.getElementsByName("flexRadioConsoMaison" );
  148.         if ( chboxs[0].checked) {
  149.           document.getElementById('HA_Input').style.display = "block";
  150.           document.getElementById('SHELLY_Input').style.display = "none";
  151.           }
  152.         if ( chboxs[1].checked) {
  153.           document.getElementById('HA_Input').style.display = "none";
  154.           document.getElementById('SHELLY_Input').style.display = "block";
  155.           }
  156.    
  157.    
  158.    
  159.     }
  160.     </script>
  161.    
  162.    
  163.    </body>


Message édité par davidmarli le 30-05-2024 à 15:40:40

---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
n°2470614
mechkurt
Posté le 30-05-2024 à 16:04:38  profilanswer
 

Le type d'un bloc div est par défaut block mais vu que tu utilises manifestement un framework qui te fait un colonage il se peut que ce soit flex ou inline-block.
 
Il se peut que son statut de block ou flex dépendent aussi de la résolution de ton dispositif de visualisation (un smartphone mettre surement tes colonnes les une au dessus des autres et donc tu seras probablement en display:block & width:100%).
 
Essaye d'inspecter ton élement à l'aide du clic droit de ton navigateur pour voir son style par défaut...
https://www.google.com/search?q=inspecter+l'element


---------------
D3
n°2470616
davidmarli
Posté le 30-05-2024 à 16:12:17  profilanswer
 

bien vu avec "flex" ça marche !
 
Quand on n'y connait rien, on perd vite son temps pour pas grand chose.
 
Encore merci pour ton aide.


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
n°2470620
mechkurt
Posté le 30-05-2024 à 16:56:37  profilanswer
 

davidmarli a écrit :

bien vu avec "flex" ça marche !


Tu devrais stocker la valeur initial avant ton code de modification car il se peut que sa valeur dépendent de ta résolution d'affichage.
Un truc du genre :

Code :
  1. <script type='text/javascript'>
  2. var original_display = document.getElementById('HA_Input').style.display;
  3.     function DisplayInputConsoMaison () {
  4.       var chboxs = document.getElementsByName("flexRadioConsoMaison" );
  5.         if ( chboxs[0].checked) {
  6.           document.getElementById('HA_Input').style.display = original_display;
  7.           document.getElementById('SHELLY_Input').style.display = "none";
  8.           }
  9.         if ( chboxs[1].checked) {
  10.           document.getElementById('HA_Input').style.display = ;
  11.           document.getElementById('SHELLY_Input').style.display = original_display;
  12.           }
  13.     }
  14. </script>


Après y'aurait pas mal de chose à améliorer dans ton code mais du moment que ça fonctionne... [:nedurb]  

davidmarli a écrit :

Quand on n'y connait rien, on perd vite son temps pour pas grand chose.


C'est sur. :o  

davidmarli a écrit :

Encore merci pour ton aide.


De rien :hello:


Message édité par mechkurt le 30-05-2024 à 19:31:21

---------------
D3
n°2470633
davidmarli
Posté le 30-05-2024 à 19:13:44  profilanswer
 

je me doute bien que des spécialistes du html/bootstrap/javascript doivent avoir des sueurs froides en voyant mon code...
Mais chacun son métier.
J'essaye de faire du mieux que je peux.
 
Bon maintenant il faut que je m'attèle à la récupération des données à afficher sur l'HTML en piochant dans mes fichiers de config avec les submit des forms ....


Message édité par davidmarli le 30-05-2024 à 19:15:00

---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
n°2470637
mechkurt
Posté le 30-05-2024 à 19:45:48  profilanswer
 

Tient nous au jus, y'a ptet une API interrogeable, voir même des projets déjà développé...


---------------
D3
n°2470642
davidmarli
Posté le 30-05-2024 à 20:20:43  profilanswer
 

pour ça, ça devrait aller, c'est pas la première fois que je programme ce genre de truc.
Mon programme renvoie une chaine de caractères avec les éléments dont j'ai besoin et je parse dans le doc HTML en attribuant les innerHTML  
 
Mais je n'hésiterai pas si j'ai besoin.
 


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Cacher un element en fonction d'un radiobutton

 

Sujets relatifs
Changer url d'un onclick en fonction d'une variable ?[Résolu] Comportement bizarre d'une fonction entre PHP5 et PHP8
[SOLVED] fonction super exceptfonction illisible dans un fichier annexe
Changer une icone en fonction d'une variable ?Créer et ajouter fonction au menu contextuel
[MarketingCloud] tri de groupes en ne récupérant que le 1er élémentFonction exec()
élément d'ancrageproblème de récupération de texte avec une fonction
Plus de sujets relatifs à : Cacher un element en fonction d'un radiobutton


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR