Warning: Trying to access array offset on value of type bool in /home/yotigory/codingmania.net/public_html/wp-content/plugins/search-everything/config.php on line 29
指定のラジオボタンをチェックすると、さらに追加で項目を表示します - CodingMania

2016/11/17

指定のラジオボタンをチェックすると、さらに追加で項目を表示します

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;
}