2017-05-07 140 views
-2

我正在製作Laravel 5.4應用程序,用戶在註冊帳戶時必須選擇學校和班級。我想要一些JavaScript(JQuery)在用戶選擇哪個學校之後更改類選擇選項值。在用戶選擇時更改選項值更改

這意味着$ class-> school_id必須等於所選學校的ID,才能將該課程顯示爲選項。

我的觀點:

<select name="school_id" class="form-control" required> 
    <option value="" disabled selected>Pick your school</option> 

     @foreach ($schools as $school) 
     <option value="{{ $school->id }}" required>{{ $school-> name}}</option> 
     @endforeach 

</select> 

<select name="my_class" class="form-control"> 
    <option value="" disabled selected>Pick your class</option> 

     @foreach($classes as $class) 
      <option value="{{$class->id}}">{{$class->name}}</option> 
     @endforeach 

</select> 
+0

沒有課與學校之間的關係所示。將學校ID的數據屬性添加到選項中,以便您可以對其進行過濾。或者在用戶選擇學校時使用ajax獲取適當的課程。除此之外,這個問題太過分了,網絡上有大量的資源用於級聯選擇 – charlietfl

回答

0

你應該增加一個Ajax技術的..

FORM

<select name="school_id" id="school_id" class="form-control" required> 
    <option value="" disabled selected>Pick your school</option> 

     @foreach ($schools as $school) 
     <option value="{{ $school->id }}" required>{{ $school-> name}}</option> 
     @endforeach 

</select> 

<select name="my_class" id="my_class" class="form-control"></select> 

JS

$(document).on('change','#school_id',function(){ 
    var school_id = $(this).val(); 
    $.ajax({ 
     url: "/getSchoolClass", 
     data: {school_id: school_id}, 
     dataType: , 
     success: function(response){ 
      var newOptions = '<option value="" disabled selected>Pick your class</option>'; 
      $(response.data).each(function(index) { 
       newOptions += '<options value="' + $(this).id + '">' + $(this).name + '</option>'; 
      }); 
      $('#my_class').html(newOptions); 
     } 
    }); 
}); 

ROUTE

Route::post('/getSchoolClass','[email protected]'); 

控制器

function someFuntion(Request $request) 
{ 
    $data = SchoolClass::where('school_id','=',$request->school_id)->get(); 
    return $data; 
}