PHPバージョン5.6
フレームワーク等は使用しておりません。
jqueryを利用してセレクトボックスの連動を行っているのですが、
データベースから取得したデータを反映したいと考えております。
セレクトボックスの動きとしては、親である「class="parent"」で
選択された項目により「class="children"」のセレクトボックスの内容が
変わるという動きになります。
初回登録→確定(DB登録)→修正(DB)からデータ参照の際にうまく動かないのが現状です。
問題点としては、データベースから取得したデータから、セレクトボックス「selected」を
付与しているのですが、その際に親のセレクトボックスを変更する前に「class="children"」の
セレクトボックスを触ると、親の選択に関わらず子の要素が全ての項目が出てしまいます。
読み込みの際に、選択があればという条件式でどうにかなるのではと思うのですが
よくわからないのが現状です。
説明が分かりずらくて申し訳ありませんが、お力をお貸し頂ければと思います。
宜しくお願い致します。
//jquery $(function() { var $children = $('.children'); var original = $children.html(); $('.parent').change(function() { var val1 = $(this).val(); $children.html(original).find('option').each(function() { var val2 = $(this).data('val'); if (val1 != val2) { $(this).not('optgroup,.msg').remove(); } }); if ($(this).val() === 'nodate') { $children.attr('disabled', 'disabled'); } else { $children.removeAttr('disabled'); } }); });
<select class="parent" name="id_genre" required> <option value="" class="msg" disabled selected>ジャンルを選択</option> <?php foreach ($genre_all as $value) { ?> <option value="<?php echo $value["genre"];?>" <?php if($id_genre == $value["genre"]){echo 'selected';}?>><?php echo h($value["genre_name"]);?></option> <?php } ?> </select> <select class="children" name="id_post" <?php if(empty($id_post)){echo "disabled";}?> required> <option value="nodate" selected="selected" data-val="nodate">タイトルを選択</option> <?php foreach ($Schedule as $value2) { ?> <option value="<?php echo $value2["id"]?>" data-val="<?php echo $value2['dir'];?>" <?php if($id_post == $value2["id"]){echo 'selected';}?>><?php echo h($value2["title"]);?></option> <?php } ?> </select>