2017-05-07 128 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; 
}