label の class="select"をチェックすると非表示になっていた選択項目が表示されます。
label の class="close"をチェックすると項目が非表示になります。
表示される項目部分はclass="Inputmore"内に記述。
特定の選択にはclass="select"をlabelに追加。
閉じる選択にはclass="select"をlabelに追加。
チェックボックスの場合は、↓
特定のチェックボックスをチェックすると、さらに追加で項目を表示します
JSを読み込みます
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <script src="js/main.js"></script>
[main.js]JavaScript
//選択されたら表示 $(function(){ $(".Form__radio dd").each(function() { //命令 var Set = $(this); var selectlabel = $(this).find("label.select"); var closelabel = $(this).find("label.close"); var selectitem = $(this).find("label.select input"); var morearea = $(this).find(".Inputmore"); var moreinput = $(this).find(".Inputmore input"); var moreinputselect = $(this).find(".Inputmore select"); //初期化 $(moreinput).attr("checked", false); $(morearea).css("display", "none"); $([selectlabel[0] , closelabel[0]]).click(function(){ if($(selectitem).prop('checked')){ $(morearea).slideDown(); }else{ $(moreinput).attr("checked", false); $(morearea).slideUp(); $(moreinputselect).val("選択"); } }); }); });
HTMl
<form action=""> <div class="Form"> <dl class="Form__radio"> <dt id="room">自分の部屋に窓はありますか?</dt> <dd> <div role="radiogroup"> <label class="select" for="room_y"><input name="room" type="radio" value="有ります" id="room_y" aria-describedby="room"/>有ります</label> <label class="close" for="room_n"><input name="room" type="radio" value="無いです" id="room_n" aria-describedby="room"/>無いです</label> </div> <div class="Inputmore"> <p>有る場合は、下記も選択してください。</p> <dl> <dt><label for="color">どんな色のカーテンを使っていますか?</label></dt> <dd> <select id="color"> <option value="選択" selected="selected">--選択してください--</option> <option value="赤色系">赤色系</option> <option value="オレンジ色系">オレンジ色系</option> <option value="白色系">白色系</option> <option value="青色系">青色系</option> <option value="緑色系">緑色系</option> <option value="紫色系">紫色系</option> <option value="黄色系">黄色系</option> <option value="黒色系">黒色系</option> <option value="柄物のカーテン">柄物のカーテン</option> </select></dd> </dl> <!-- /.Inputmore --></div> </dd> </dl> <dl class="Form__radio"> <dt id="roomsofa">自分の部屋にソファはありますか?</dt> <dd> <div role="radiogroup"> <label class="select" for="roomsofa_y"><input name="roomsofa" type="radio" value="有ります" id="roomsofa_y" aria-describedby="roomsofa"/>有ります</label> <label class="close" for="roomsofa_n"><input name="roomsofa" type="radio" value="無いです" id="roomsofa_n" aria-describedby="roomsofa"/>無いです</label> </div> <div class="Inputmore"> <p>有る場合は、下記も選択してください。</p> <dl> <dt><label for="color02">どんな色のソファですか?</label></dt> <dd> <select id="color02"> <option value="選択" selected="selected">--選択してください--</option> <option value="赤色系">赤色系</option> <option value="オレンジ色系">オレンジ色系</option> <option value="白色系">白色系</option> <option value="青色系">青色系</option> <option value="緑色系">緑色系</option> <option value="紫色系">紫色系</option> <option value="黄色系">黄色系</option> <option value="黒色系">黒色系</option> <option value="柄物のカーテン">柄物のカーテン</option> </select></dd> </dl> <!-- /.Inputmore --></div> </dd> </dl> <!-- /.Form --></div> </form>
CSS
/* Form -----------------------------------------*/ .Form{ margin: 10px 0 20px 0; } .Form label{ display: inline-block; cursor: pointer; } .Form>dl{ margin: 0 0 40px 0; } .Form dl dt{ background-color: #EBEBEC; padding: 10px; border-radius: 4px; } .Form dl dd{ padding: 10px; } .Inputmore { margin: 10px 0 0 0; }