Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129

    Seleziona cella con "radio"

    Come faccio a far tornare la cella della tabella bianca se seleziono un'altro parametro? Questo è il codice che mi cambia il colore della cella selezionata:

    codice HTML:
    <td width="10%" bgcolor="WHITE" colspan="2">
          <input type="radio" name="cyl"  value="<?=$row["id"]?>"  onclick="this.parentNode.style.backgroundColor='#F5BB8E'">
          <?=$row["cyl"]?>
       </td>
    Non riesco a farla tornare bianca se deseleziono.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Potresti mettere onclick anche sugli altri radio ed eseguire uno script simile ma applicando il colore desiderato, in questo caso "white".
    Vedi se ti può andare, ovviamente ci potrebbero essere soluzioni più ottimali, ma non conoscendo il contesto, questa è la più diretta.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Potresti mettere onclick anche sugli altri radio ed eseguire uno script simile ma applicando il colore desiderato, in questo caso "white".
    Vedi se ti può andare, ovviamente ci potrebbero essere soluzioni più ottimali, ma non conoscendo il contesto, questa è la più diretta.
    Tutti devono avere quel colore una volta selezionati, se li deseleziono devono tornare bianchi. Cioè, visto che sono dei "radio", posso selezionarne uno solo del gruppo, e solo quello selezionato deve avere quel colore, gli atri come sfondo devono avere il bianco. Nel caso sbagliassi a selezionare, lo sfondo di quello selezionato precedentemente deve ritornare bianco. Ora mi resta il colore come se fosse selezionato. Non so come resettare il tutto quando cambio selezione.

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Aspetta, ma gli input radio stanno in celle differenti?

    In tal caso ti posto una soluzione.
    Usi per caso jQuery?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Questo è in semplice JavaScript:
    codice:
    <script>
      var cyl = document.getElementsByName("cyl");
      var idcyl = cyl.length;
      while (idcyl--){cyl[idcyl].onclick = evidenziaCella};
      function evidenziaCella(){
        var idcyl = cyl.length;
        while (idcyl--){
          cyl[idcyl].parentNode.style.backgroundColor = cyl[idcyl].checked ? "#F5BB8E" : "white";
        }
      }
      evidenziaCella();
    </script>
    Ti basterà mettere questo blocco di script direttamente nell'html dopo la chiusura della tabella.
    A quel punto non ti servirà più avere l'onclick sui singoli radio, dovrai quindi eliminarlo.

    Chiaramente devi assicurarti che i vari radio appartengano allo stesso gruppo, cioè abbiano tutti name="cyl".
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Ho scritto una versione che consente di gestire enne gruppi di radio:
    codice:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    <style type="text/css">
    #table_id td{
     background:#ccc;
    }
    </style>
    <script type="text/javascript">
    window.onload=function(){
     var radio=document.querySelectorAll('#table_id input[type="radio"]');
     for(var i=0; i<radio.length; i++){
      radio[i].onclick=checkRow;
     }
    }
    function checkRow(event){
     var radio=event.target;
     var tr=radio.parentNode.parentNode;
     var tds=tr.querySelectorAll('td');
     for(var i=0; i<tds.length; i++){
      tds[i].style.backgroundColor='#ccc';
     }
     radio.parentNode.style.backgroundColor='#fff';
    }
    </script>
    </head>
    <body>
    <table id="table_id">
     <tr>
        <td><input type="radio" name="myradio" value="1"></td>
        <td><input type="radio" name="myradio" value="2"></td>
       </tr>
     <tr>
        <td><input type="radio" name="myradio2" value="1"></td>
        <td><input type="radio" name="myradio2" value="2"></td>
       </tr>
    </table>
    </body>
    </html>
    Per comodità ho usato la versione 3 del DOM quindi potrebbe avere problemi di retro-compatibilità con i browser non aggiornati.
    @KillerWorm da un post su CSS di Valeria89 si evince che ci sono più gruppi di radio.

  7. #7
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Questo è in semplice JavaScript:
    codice:
    <script>
      var cyl = document.getElementsByName("cyl");
      var idcyl = cyl.length;
      while (idcyl--){cyl[idcyl].onclick = evidenziaCella};
      function evidenziaCella(){
        var idcyl = cyl.length;
        while (idcyl--){
          cyl[idcyl].parentNode.style.backgroundColor = cyl[idcyl].checked ? "#F5BB8E" : "white";
        }
      }
      evidenziaCella();
    </script>
    Ti basterà mettere questo blocco di script direttamente nell'html dopo la chiusura della tabella.
    A quel punto non ti servirà più avere l'onclick sui singoli radio, dovrai quindi eliminarlo.

    Chiaramente devi assicurarti che i vari radio appartengano allo stesso gruppo, cioè abbiano tutti name="cyl".
    Grazie gentilissimo!

  8. #8
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Ho scritto una versione che consente di gestire enne gruppi di radio:
    codice:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    <style type="text/css">
    #table_id td{
     background:#ccc;
    }
    </style>
    <script type="text/javascript">
    window.onload=function(){
     var radio=document.querySelectorAll('#table_id input[type="radio"]');
     for(var i=0; i<radio.length; i++){
      radio[i].onclick=checkRow;
     }
    }
    function checkRow(event){
     var radio=event.target;
     var tr=radio.parentNode.parentNode;
     var tds=tr.querySelectorAll('td');
     for(var i=0; i<tds.length; i++){
      tds[i].style.backgroundColor='#ccc';
     }
     radio.parentNode.style.backgroundColor='#fff';
    }
    </script>
    </head>
    <body>
    <table id="table_id">
     <tr>
        <td><input type="radio" name="myradio" value="1"></td>
        <td><input type="radio" name="myradio" value="2"></td>
       </tr>
     <tr>
        <td><input type="radio" name="myradio2" value="1"></td>
        <td><input type="radio" name="myradio2" value="2"></td>
       </tr>
    </table>
    </body>
    </html>
    Per comodità ho usato la versione 3 del DOM quindi potrebbe avere problemi di retro-compatibilità con i browser non aggiornati.
    @KillerWorm da un post su CSS di Valeria89 si evince che ci sono più gruppi di radio.
    Grazie, sei gentilissimo! Mi aiuti sempre a risolvere i miei mille problemi! Grazie, grazie, grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.