【发布时间】:2018-04-28 19:36:24
【问题描述】:
我使用的是 Laravel 5.5,并且有 3 个动态下拉菜单。我的第一个下拉菜单是服务。服务有很多类别,类别是第二个下拉列表。一个类别属于一个服务。现在这些类别有很多方法,这是第三个下拉列表。方法属于类别。
这就是我到目前为止所做的。
create.blade.php
<!-- Service Id Field -->
<div class="form-group col-sm-6">
<label for="service_id">Service:</label>
<select name="service_id" class="form-control" required id="service_id">
<option disabled selected>Choose Services</option>
@foreach ($services as $service)
<option value="{{ $service->id }}">{{ $service->description }}</option>
@endforeach
</select>
</div>
<!-- Categories Id Field -->
<div class="form-group col-sm-6">
<label for="category_id">Category:</label>
<select name="category_id" class="form-control" required id="category_id">
<option disabled selected>Choose Category</option>
{{-- @foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach --}}
</select>
</div>
<!-- Methodologies Id Field -->
<div class="form-group col-sm-6">
{!! Form::label('methodology_id', 'Method:') !!}
{!! Form::select('methodology_id', $methodologies, null, ['class' => 'form-control','required'])!!}
</div>
在我的脚本中
$(function() {
$('#service_id').change(function() {
let url = '{{ url('encoder') }}' + '/service/' + $(this).val() + '/categories/';
$.get(url, function(data) {
console.log(data);
let select = $('form select[name= category_id]');
select.empty();
$.each(data,function(key, value) {
console.log(key + ' '+ value);
select.append('<option value=' + key + '>' + value + '</option>');
});
});
});
});
// Dynamic property dropdown for methodologies
$(function() {
$('select[name=category_id]').change(function() {
let url2 = '{{ url('encoder') }}' + '/categories/' + $(this).val() + '/methodologies/';
$.get(url2, function(data) {
let select2 = $('form select[name= methodology_id]');
select2.empty();
$.each(data,function(key, value) {
console.log(key + ' '+ value);
select2.append('<option value=' + key + '>' + value + '</option>');
});
});
});
});
我在我的 ajax 中创建了 2 个函数,如果第一个下拉菜单发生变化。第二个下拉列表将根据所选数据的第一个下拉列表填充。但是,所有这些都运行良好。在第三个下拉列表被填充之前,我仍然需要在第二个下拉列表中进行选择。
我想填充第三个下拉列表,methodologies_id 取决于第一个下拉列表填充的第一个选项。
如果有人可以提供帮助,我们将不胜感激。 提前致谢。
【问题讨论】:
-
您的 select3 是根据 select2 中的选定值填充的。当您的 select1 被选中时,它会填充 select2,而 select2 中没有选定的值,因此在您在 select2 中进行选择之前不会填充 select3。如果您想针对 select1 中的选择填充 select3,您可能需要定义一个关系 b/w
services和methodologies并为其创建一个路由。或者在 select1 更改事件上选择一个默认值,并在第一个函数上触发 select2 的更改事件。
标签: php jquery ajax laravel laravel-5