###わからないこと
いつもお世話になっております。
この度html5特有のセレクトボックスでのデータの受け渡しについて処理がうまくいかないため、質問をさせていただきます。
下記のコードで職種を選択したら、詳細職種のセレクトボックスの中身が出力されるようにしたいのですが、うまくいきません。
<select name="jtype0" class="form-control input-sm inner-shadow js-parent-select" tabindex="1" data-target="#mobile-jtypeDetail" data-children="{{json_encode($item['jtype'], JSON_UNESCAPED_UNICODE)}}"> <option value="">職種</option> @foreach ($item['jtype'] as $jtype) <option value="{{$jtype['id']}}"{{isset($item['value']['jtype0']) && $item['value']['jtype0'] === $jtype['id'] ? ' selected' : ''}}>{{$jtype['name']}}</option> @endforeach </select> <select class="form-control input-sm inner-shadow" tabindex="1" id="mobile-jtypeDetail" name="jtype1" title="詳細職種"> <option value="">詳細職種</option> @if (isset($item['value']['jtype0']) && isset($item['jtype'][$item['value']['jtype0']])) @foreach ($item['jtype'][$jtype['id']]['children'] as $jDetail) <option value="{{$jDetail['id']}}"{{isset($item['value']['jtype']) && $item['value']['jtype'] === $jDetail['id'] ? ' selected' : ''}}>{{$jDetail['name']}}</option> @endforeach @endif </select>
js
1$(".js-parent-select").change(function(){ 2 var $select = $($(this).attr("data-target")).empty(); 3 $select.append('<option value="">'+$select.attr("title")+'</option>'); 4 var children = JSON.parse($(this).attr("data-children"))[$(this).val()]; 5 if (children) { 6 for (var i = 0; i < children.length; i++) { 7 $select.append($('<option value="'+children[i].id+'">').text(children[i].name)); 8 } 9 } 10});
下に変数の中身を書きます。
jsonエンコードした$item['jtype']の中身
{"48": {"id":48, "name":"介護", "children": [{"id":439,"name":"ヘルパー","checked":false}, {"id":440,"name":"介護士","checked":false}, {"id":441,"name":"マネジャー","checked":false}, {"id":442,"name":"生活相談","checked":false}, "49": {"id":49, "name":"会計事務", "children": [{"id":448,"name":"スタッフ","checked":false}, {"id":449,"name":"内勤のみ","checked":false}, {"id":450,"name":"巡回有り","checked":false}, {"id":451,"name":"税理士","checked":false}, "51": {"id":51, "name":"調理", "children": [{"id":459,"name":"調理師","checked":false}, {"id":460,"name":"栄養士","checked":false}, {"id":461,"name":"調理補助","checked":false}]}, "52": {"id":52, "name":"その他", "children": [{"id":2120,"name":"管理","checked":false}, {"id":527,"name":"一般事務","checked":false}, {"id":530,"name":"営業","checked":false}, {"id":463,"name":"技術者","checked":false}, ]}}
$item['jtype']の中身
48 => array ( 'id' => 48, 'name' => '介護', 'children' => array ( 0 => array ( 'id' => 439, 'name' => 'ヘルパー', 'checked' => false, ), 1 => array ( 'id' => 440, 'name' => '介護士', 'checked' => false, ), 2 => array ( 'id' => 441, 'name' => 'マネジャー', 'checked' => false, ), 3 => array ( 'id' => 442, 'name' => '生活相談', 'checked' => false, ), ), ), 49 => array ( 'id' => 49, 'name' => '会計事務', 'children' => array ( 0 => array ( 'id' => 448, 'name' => 'スタッフ', 'checked' => false, ), 1 => array ( 'id' => 449, 'name' => '内勤のみ', 'checked' => false, ), 2 => array ( 'id' => 450, 'name' => '巡回有り', 'checked' => false, ), 3 => array ( 'id' => 451, 'name' => '税理士', 'checked' => false, ), ), ), 51 => array ( 'id' => 51, 'name' => '調理', 'children' => array ( 0 => array ( 'id' => 459, 'name' => '調理師', 'checked' => false, ), 1 => array ( 'id' => 460, 'name' => '栄養士', 'checked' => false, ), 2 => array ( 'id' => 461, 'name' => '調理補助', 'checked' => false, ), ), ), 52 => array ( 'id' => 52, 'name' => 'その他', 'children' => array ( 0 => array ( 'id' => 2120, 'name' => '管理', 'checked' => false, ), 1 => array ( 'id' => 527, 'name' => '一般事務', 'checked' => false, ), 2 => array ( 'id' => 530, 'name' => '営業', 'checked' => false, ), 3 => array ( 'id' => 463, 'name' => '技術者', 'checked' => false, ), ), ), )
以上のようになっております。
職種にあたるセレクトボックスのいずれかを選択したら、それと連動して詳細職種のセレクトボックスが表示されるようにしたいです。
ご教授いただければ幸いです。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー