HTMLとjavascriptを使ってselectboxを作成しました
1つ目の項目に’有り’と入れると次のselectboxが表示されるようになっています。
selectboxのみでしたらうまくいったのですが、labelを入れたらlabelは、はじめから非表示にならず
全部出てしまっています。1つ目のバス希望は出ていていいのですが、残りのバスルート及び停留所は、バス希望有りにしないと出ないようにしたいのですが、、、
おまけに項目の必須条件、(入れ忘れ防止)の’正しく入力してください’の文字は全てのselectboxではじめから出てしまっております。
javascripに追加のcodeを入れるところまでは調べてわかったのですが、書き方がよくわからず
詰まっております。
⑴バス希望有り→バスルートのlabelとselectboxが表示される
⑵バスルートを選択すると→停留所のlabelとselectboxが表示される
⑶3つのselectboxに選択がない場合のみ、正しく入力してくださいが出るようにしたい→現在は全て出たままになってしまう
どなたかわかる方教えていただけますか?
HTML
1<head> 2 <meta charset="UTF-8"> 3 <title>formrun.js - Confirm mode</title> 4 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.3/css/bootstrap.min.css" integrity="sha384-MIwDKRSSImVFAZCVLtU0LMDdON6KVCrZHyVQQj6e8wIEJkW4tvwqXrbMIya1vriY" crossorigin="anonymous"> 5 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.slim.min.js" crossorigin="anonymous"></script> 6 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.3/js/bootstrap.min.js" integrity="sha384-ux8v3A6CPtOTqOzMKiuo3d/DomGaaClxFYdCu2HPMBEkf6x2xiDyJ7gkXU0MWwaD" crossorigin="anonymous"></script> 7 <script src="https://sdk.form.run/js/v2/formrun.js"></script> 8</head> 9 10<body> 11 12<div class="container"> 13 <h1>formrun.js <small> - Confirm mode</small></h1> 14 15 <div class="card"> 16 <h3 class="card-header" data-formrun-hide-if-confirm>フォームを入力してください</h3> 17 <h3 class="card-header" data-formrun-show-if-confirm>確認画面</h3> 18 19 <div class="card-block"> 20 <form class="formrun" action="#" method="get" data-formrun-confirm> 21 <div class="form-group row" 22 data-formrun-class-if-success="has-success" data-formrun-class-if-error="has-danger" data-formrun-target="お名前"> 23 <label class="col-xs-3 col-form-label" for="name">お名前</label> 24 <div class="col-xs-9" data-formrun-hide-if-confirm> 25 <input type="text" class="form-control" id="name" name="お名前" 26 data-formrun-required data-formrun-class-if-success="form-control-success" data-formrun-class-if-error="form-control-danger"> 27 <div class="text-danger" data-formrun-show-if-error="お名前">お名前を正しく入力してください</div> 28 </div> 29 <div class="col-xs-9" data-formrun-show-if-confirm> 30 <span data-formrun-confirm-value="お名前"></span> 31 </div> 32 </div> 33 34<div class="form-group row"> 35 <label class="form-control-label">バス希望 <span class="haveto">必須</span></label> 36 <div class="form-control-label" data-formrun-hide-if-confirm> 37 38<select class="form-control" name="バス希望" data-child="#1"> 39 <option value="" selected="selected">選択してください</option> 40 <option value="希望有り">希望有り</option> 41 <option value="希望無し">希望無し</option> 42</select> 43<span class="text-danger" data-formrun-show-if-error="バス希望">正しく入力してください</span> 44 </div> 45 <div class="cp_iptxt" data-formrun-show-if-confirm> 46 <span data-formrun-confirm-value="バス希望"></span> 47 </div> 48 </div> 49 50 51<div class="form-group row"> 52 <label class="form-control-label">バスルート <span class="haveto">必須</span></label> 53 <div class="form-control-label" data-formrun-hide-if-confirm> 54 55<select class="form-control children" id="1" name="バスルート" data-child="#2"> 56 <option value="" selected="selected">ルートを選択してください</option> 57 <option value="①ルート" data-val="希望有り">①ルート</option> 58 <option value="②ルート" data-val="希望有り">②ルート</option> 59</select> 60<span class="text-danger" data-formrun-show-if-error="バスルート">正しく入力してください</span> 61 </div> 62 <div class="cp_iptxt" data-formrun-show-if-confirm> 63 <span data-formrun-confirm-value="バスルート"></span> 64 </div> 65 </div> 66 67 68<div class="form-group row"> 69 <label class="form-control-label">停留所 <span class="haveto">必須</span></label> 70 <div class="form-control-label" data-formrun-hide-if-confirm> 71 72<select class="form-control children" id="2" name="停留所"> 73 <option value="" selected="selected">停留所を選択してください</option> 74 <option value="交差点先" data-val="①ルート">交差点先</option> 75 <option value="ポルシェ前" data-val="①ルート">ポルシェ前</option> 76 <option value="南郵便局前" data-val="①ルート">南郵便局前</option> 77<option value="動物病院前" data-val="②ルート">動物病院前</option> 78<option value="マンション前" data-val="②ルート">マンション前</option> 79<option value="幼稚園前" data-val="②ルート">幼稚園前</option> 80</select> 81<span class="text-danger" data-formrun-show-if-error="停留所">正しく入力してください</span> 82 </div> 83 <div class="cp_iptxt" data-formrun-show-if-confirm> 84 <span data-formrun-confirm-value="停留所"></span> 85 </div> 86 </div> 87<div> 88 <a href="javascript:void(0)" class="btn btn-secondary" data-formrun-back-button>戻る</a> 89 <button type="submit" class="btn btn-primary pull-xs-right" data-formrun-error-text="未入力の項目があります" data-formrun-send-text="送信する" data-formrun-submitting-text="送信中...">確認</button> 90 </div> 91 </form> 92 </div> 93 </div> 94 95</div><!-- /.container --> 96 97</body> 98</html> 99
javascript
1<script> 2$('.form-control').on('change', function(){ 3 let $this = $(this), 4 child = $this.data('child'), 5 val = $this.val(); 6 7 if (val) { 8 let op_cnt = 0; 9 $(child).find('option').each(function(){ 10 let op = $(this); 11 if ( ! op.data('val') || op.data('val') == val) { 12 if (op.closest('span.hide').length) { 13 op.unwrap(); 14 } 15 16 if (op.data('val') == val) { 17 op_cnt ++; 18 } 19 } else { 20 if ( ! op.closest('span.hide').length) { 21 op.wrap('<span class="hide">'); 22 } 23 } 24 }); 25 26 if (op_cnt) { 27 $(child).show(); 28 } else { 29 $(child).val('').hide().change(); 30 } 31 } else { 32 $(child).val('').hide().change(); 33 } 34}); 35</script>
CSS
1body { 2 padding: 50px 0 100px; 3}
回答2件
あなたの回答
tips
プレビュー