Vamos ver uma maneira de mostrar e ocultar componentes de paginas em HTML com o uso de JavaScript.
Vamos usar o seguinte caso de estudo:
Um check-list de avarias que só deve ser marcado quando avariado e deve conter uma descrição da avaria.
Para facilitar agilizar o desenvolvimento e tornar nossa pagina responsiva vamos usar o Framework JQuery Mobile:
<head> <title>Checklist</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" /> <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script> <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> </head>
Agora vamos montar a seguinte estrutura, um check-box para cada item do check-list, e quando selecionado apresenta um campo text para incluir a observação.
<label for="parabrisaEnt">Para Brisa</label> <input type="checkbox" name="parabrisaEnt" id="parabrisaEnt" value="yes" > <input type="text" name="parabrisaEntTxt" id="parabrisaEntTxt" style="text-transform:uppercase" placeholder="Descreva o defeito"/>
Agora faremos com que os campos text iniciem ocultos inserindo o comando CSS display:none
<input type="text" name="parabrisaEntTxt" id="parabrisaEntTxt" style="display:none;text-transform:uppercase" placeholder="Descreva o defeito"/>
E a chamada da função em JavaScript ao marcar no check-box
<input type="checkbox" name="parabrisaEnt" id="parabrisaEnt" value="yes" onclick="Mudarestado('parabrisaEntTxt')">
Agora para finalizar vamos controlar o display dos componentes com JavaScript passando o id do componente a ser alterado:
function Mudarestado(el) { var display = document.getElementById(el).style.display; if(display == "none") document.getElementById(el).style.display = 'block'; else document.getElementById(el).style.display = 'none'; }
Veja como fica o resultado:
Agora segue o código completo:
<!DOCTYPE html> <html> <head> <title>Checklist</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" /> <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script> <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> </head> <body> <div data-role="main" data-dialog="true" class="ui-content"> <fieldset data-role="controlgroup"> <legend>Check-list de avarias: (Marcar quando avariado/faltando)</legend> <label for="Cabine">Cabine</label> <input type="checkbox" name="Cabine" id="Cabine" value="yes" onclick="Mudarestado('CabineTxt')" > <input type="text" name="CabineTxt" id="CabineTxt" style="display:none;text-transform:uppercase" placeholder="Descreva o defeito"/> <label for="parabrisaEnt">Para Brisa</label> <input type="checkbox" name="parabrisaEnt" id="parabrisaEnt" value="yes" onclick="Mudarestado('parabrisaEntTxt')"> <input type="text" name="parabrisaEntTxt" id="parabrisaEntTxt" style="display:none;text-transform:uppercase" placeholder="Descreva o defeito"/> <label for="capasEnt">Capas Retrovisores</label> <input type="checkbox" name="capasEnt" id="capasEnt" value="yes" onclick="Mudarestado('capasEntTxt')"> <input type="text" name="capasEntTxt" id="capasEntTxt" style="display:none;text-transform:uppercase" placeholder="Descreva o defeito"/> <label for="retrovisoresEnt">Retrovisores</label> <input type="checkbox" name="retrovisoresEnt" id="retrovisoresEnt" value="yes" onclick="Mudarestado('retrovisoresEntTxt')"> <input type="text" name="retrovisoresEntTxt" id="retrovisoresEntTxt" style="display:none;text-transform:uppercase" placeholder="Descreva o defeito"/> <label for="faroisEnt">Faróis</label> <input type="checkbox" name="faroisEnt" id="faroisEnt" value="yes" onclick="Mudarestado('faroisEntTxt')"> <input type="text" name="faroisEntTxt" id="faroisEntTxt" style="display:none;text-transform:uppercase" placeholder="Descreva o defeito"/> <label for="progManutEnt">Programa Manutenção</label> <input type="checkbox" name="progManutEnt" id="progManutEnt" value="yes" onclick="Mudarestado('progManutEntTxt')"> <input type="text" name="progManutEntTxt" id="progManutEntTxt" style="display:none;text-transform:uppercase" placeholder="Descreva o defeito"/> </fieldset> <script> function Mudarestado(el) { var display = document.getElementById(el).style.display; if(display == "none") document.getElementById(el).style.display = 'block'; else document.getElementById(el).style.display = 'none'; } </script> </div> </body> </html>