前提・実現したいこと
Laravelで一つのセレクトボックスの選択によって、二つ目のセレクトボックスの内容が変わるようにしたいです。
具体的には、動物の種類(犬)を選択すると、二つ目のセレクトボックスに犬の詳細な種類の選択が出るというものです。
現状は二つのセレクトボックスを表示しているだけで、連動はできていません。
javascript、jQueryでどのように実現したら良いのでしょうか。調べると、セレクトボックスがハードコーディング
されている場合の方法はあるのですが、DBの値で作成されている場合どのように実現したら良いのかわかりません。
お手数ですがご教授お願いします。
該当のソースコード
php
1// Controller 2public function create() 3 { 4 $categoryList = Category::pluck('name', 'id'); 5 $subCategoryList = SubCategory::pluck('name', 'id'); 6 return view('posts.create', compact( 7 'categoryList', 'subCategoryList')); 8 } 9
php
1// モデル 2class Category extends Model 3{ 4 protected $fillable = ['name']; 5 6 // リレーション 7 public function subCategory() 8 { 9 return $this->hasMany(SubCategory::class); 10 }
categoryテーブル(一部)
id | name |
---|---|
1 | 犬 |
2 | 猫 |
subCategoryテーブル(一部)
id | category_id | name |
---|---|---|
1 | 1 | チワワ |
2 | 1 | トイプードル |
3 | 2 | スコティッシュ・フォールド |
4 | 2 | アメリカンショートヘア |
php
1// View 2<form action="{{ route('post.store') }}"> 3 <div class="form-group col-sm-6"> 4 <label for="category">ペットの種類</label> 5 <select class="form-control" name="category_id" id="main"> 6 <option value="" style="display: none;">選択してください</option> 7 @foreach ($categoryList as $index => $name) 8 <option value="{{ $index }}">{{ $name }}</option> 9 @endforeach 10 </select> 11 <label for="category">ペットの詳細な種類</label> 12 <select class="form-control" name="sub_category_id" id="sub"> 13 @foreach ($subCategoryList as $index => $name) 14 <option value="{{ $index }}" data-val="">{{ $name }}</option> 15 @endforeach 16 </select> 17 </div> 18</form> 19
補足情報(FW/ツールのバージョンなど)
Laravel7
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。