javascript - Laravel 依赖选择

标签 javascript sql-server ajax laravel

我已经为此苦苦挣扎好几天了。我必须选择框。一个用于部门,另一个用于部门。代码是:

路线:

enter image description here

查看字段:

enter image description here

Controller :

enter image description here

Javascript:

enter image description here

当我单击第一个选择时,我可以获得相关部分,但选择的部分不会附加。我究竟做错了什么?我正在使用 Laravel 和 SQL Server 实现这个解决方案。

1st department

2nd department

感谢所有帮助。干杯,继续努力:)。

最佳答案

在几个月没有机会使用 Laravel 后,我花了一些时间来解决这个问题。我想要 3 个依赖于葡萄牙国家的组合框(国家、地区、县)。我实现的解决方案记录在下图中。如果您有疑问,请随时提问。我知道这不是完美的解决方案,但这就是我设法得到的:)。谢谢您,继续努力。

路线:

//Listas (Distritos e Concelhos)
Route::get('/website/candidaturas/obterlistadistritos','Oportunidades\RecrutamentoController@obterListaDistritos');
Route::get('/website/candidaturas/obterlistaconcelhos','Oportunidades\RecrutamentoController@obterListaConcelhos');

查看字段:

<label for="paisCandidatura">País</label>
<select onChange="" class="form-control {{ $errors->has('paisCandidatura') ? 'is-invalid' : '' }}" id="paisCandidatura" name="paisCandidatura">

<option value=""></option>
    @foreach($paises as $pais)
        @if($pais->id == old('paisCandidatura'))
            <option value="{{$pais->id}}" selected>{{$pais->nome}}</option>
        @else
            <option value="{{$pais->id}}">{{$pais->nome}}</option>
        @endif
    @endforeach

</select>
@if($errors->has('paisCandidatura'))
    <div class="invalid-feedback">{{ $errors->first('paisCandidatura') }}</div>
@endif

<label for="distritoCandidatura">Distrito</label>
<select onChange="" class="form-control {{ $errors->has('distritoCandidatura') ? 'is-invalid' : '' }}" id="distritoCandidatura" name="distritoCandidatura">
    <option value =""></option>
    @if(old('paisCandidatura') == 141)

        @foreach($distritos as $distrito)

            @if($distrito->id == old('distritoCandidatura'))
                <option value="{{$distrito->id}}" selected>{{$distrito->nome}}</option>
            @else
                <option value="{{$distrito->id}}">{{$distrito->nome}}</option>
            @endif

        @endforeach

    @endif

</select>
@if($errors->has('distritoCandidatura'))
    <div class="invalid-feedback">{{ $errors->first('distritoCandidatura') }}</div>
@endif

<label for="concelhoCandidatura">Concelho</label>
<select onChange="" class="form-control {{ $errors->has('concelhoCandidatura') ? 'is-invalid' : '' }}" id="concelhoCandidatura" name="concelhoCandidatura">
    <option value =""></option>
    @if(old('paisCandidatura') == 141)

        @foreach($concelhos as $concelho)

            @if($concelho->id == old('concelhoCandidatura'))
                <option value="{{$concelho->id}}" selected>{{$concelho->nome}}</option>
            @else
                <option value="{{$concelho->id}}">{{$concelho->nome}}</option>
            @endif

        @endforeach

    @endif

</select>
@if($errors->has('concelhoCandidatura'))
    <div class="invalid-feedback">{{ $errors->first('concelhoCandidatura') }}</div>
@endif

Controller :

    /**
     * Return a list of districts associated to a country
     */
    public function obterListaDistritos(Request $request)
    {
        $distritos = Distrito::all()
        ->where("pais_id",$request->pais_id)
        ->pluck("nome","id");
        return response()->json($distritos);
    }

    /**
     * Return a lista of councils associated to a district
     */
    public function obterListaConcelhos(Request $request)
    {
        $concelhos = Concelho::all()
        ->where("distrito_id",$request->distrito_id)
        ->pluck("nome","id");
        return response()->json($concelhos);
    }

Javascript:

    <script type="text/javascript">
        $('#paisCandidatura').change(function(){
        var paisCandidatura = $(this).val();    
        if(paisCandidatura){
            $.ajax({
               type:"GET",
               url:"{{url('/candidaturas/obterlistadistritos')}}?pais_id="+paisCandidatura,
               success:function(res){               
                if(res){
                    $("#distritoCandidatura").empty();
                    $("#distritoCandidatura").append('<option value=""></option>');
                    $("#concelhoCandidatura").empty();
                    $("#concelhoCandidatura").append('<option value=""></option>');
                    $.each(res,function(key,value){
                        $("#distritoCandidatura").append('<option value="'+key+'">'+value+'</option>');
                    });
               
                }else{
                   $("#distritoCandidatura").empty();
                   $("#concelhoCandidatura").empty();
                }
               }
            });
        }else{
            $("#distritoCandidatura").empty();
            $("#concelhoCandidatura").empty();
        }      
       });
       
        $('#distritoCandidatura').on('change',function(){
        var distritoCandidatura = $(this).val();    
        if(distritoCandidatura){
            $.ajax({
               type:"GET",
               url:"{{url('/candidaturas/obterlistaconcelhos')}}?distrito_id="+distritoCandidatura,
               success:function(res){               
                if(res){

                    $("#concelhoCandidatura").empty();
                    $("#concelhoCandidatura").append('<option value=""></option>');
                    $.each(res,function(key,value){
                        $("#concelhoCandidatura").append('<option value="'+key+'">'+value+'</option>');
                    });
               
                }else{

                   $("#concelhoCandidatura").empty();

                }
               }
            });
        }else{

            $("#concelhoCandidatura").empty();
            
        }
            
       });
    </script>

结果:

enter image description here

enter image description here

enter image description here

关于javascript - Laravel 依赖选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54601317/

相关文章:

Javascript - DOMSubtreeModified 事件未针对我在 Firefox 中的内容触发!

javascript - 如何用数字替换字符串的单个索引?

javascript - 如何更改参数中指定的变量

php - 如何使用更新的 mysql 数据库信息更新 javascript 中的 php 变量?

SQL Server CTE 选择单树分支结构直至根

sql - 获取声明的列创建数据类型

sql-server - 如何将描述属性添加到 SSMS 中的表设计器 View ?

javascript - 如何使用 AJAX 在点击保存时向表中添加记录?

php - 使用记录保存的消息进行表单验证

javascript - 如何避免 JavaScript 函数中的重定向