javascript - 如何在使用javascript和ajax时在for循环(laravel)中使用许多动态下拉列表?

标签 javascript php ajax laravel

我正在尝试使用多个动态下拉列表,因为我想在 foreach 循环中使用它。在我的过程中,我有每个职位的阶段和状态,我在下面截图了。我循环职位并放置foreach 循环内的动态下拉阶段和状态。 enter image description here 问题是,如果我选择舞台,所有状态都会根据我选择的舞台不断变化。我只想影响我选择舞台的状态,例如在我上面的照片中,如果我选择“下的舞台” chinese tralator(listening,speaking)”职称,应该只影响自己舞台下的身份,不应该影响“出纳”职称下的身份。

这是我迄今为止完成的代码的代码,

<?php

   $jobmatches = \App\Models\Jobposition::where('require_position',$jobseekers->desire_position_1)->orderBy('free_or_paid','desc')->pluck('id');
?>

         @foreach($jobmatches as $value)
           <?php  $job_list = \App\Models\Jobposition::where('id',$value)->first(); ?>
            <div class="form-group"> 
                <input type="checkbox" name="job_position[]" value="{{ $job_list['id']}}"> 
                {{ $job_list['job_title']}}<br>
            </div>

            <div class="form-group">
                <label for="title">Select Stage:</label>
                <select name="stage[]" class="form-control" >
                    <option value="">--- Select Stage ---</option>
                    @foreach ($stages as $key => $value)
                     <option value="{{ $key }}">{{ $value }}</option>
                    @endforeach
                </select>
            </div>

            <div class="form-group">
                <label for="title">Select Status:</label>
                <select name="status[]" class="form-control">
                </select>
            </div>
            @endforeach

这是ajax代码,

       $(document).ready(function() {
        $('select[name="stage[]"]').on('change', function() {
            var stateID = $(this).val();
            if(stateID) {
                $.ajax({
                    url: '/myform/ajax/'+stateID,
                    type: "GET",
                    dataType: "json",
                    success:function(data) {

                        $('select[name="status[]"]').empty();
                        $.each(data, function(key, value) {
                            $('select[name="status[]"]').append('<option value="'+ key +'">'+ value +'</option>');
                        });

                    }
                });
            }else{
                $('select[name="status[]"]').empty();
            }
        });
    });

如有任何帮助,我们将不胜感激。

最佳答案

将包装 div 添加到一组相关元素中:

<div class="job-list">
    <div class="form-group"> 
        <input type="checkbox" name="job_position[]" value="{{ $job_list['id']}}"> 
        {{ $job_list['job_title']}}<br>
    </div>

    <div class="form-group">
        <label for="title">Select Stage:</label>
        <select name="stage[]" class="form-control" >
            <option value="">--- Select Stage ---</option>
            @foreach ($stages as $key => $value)
             <option value="{{ $key }}">{{ $value }}</option>
            @endforeach
        </select>
    </div>

    <div class="form-group">
        <label for="title">Select Status:</label>
        <select name="status[]" class="form-control">
        </select>
    </div>
</div>

然后在您的 JS 中,您可以调整您的处理程序以仅处理同一组中的元素:

$(document).ready(function() {
    $('select[name="stage[]"]').on('change', function() {
        var stateID = $(this).val();
        /* define the target select, use closest to go back up to the job-list parent, 
         * then pull the select element that is a child of it
         */
        var $select = $(this).closest('.job-list').find('select[name="status[]"]');

        if(stateID) {
            $.ajax({
                url: '/myform/ajax/'+stateID,
                type: "GET",
                dataType: "json",
                success:function(data) {
                    $select.empty();
                    $.each(data, function(key, value) {
                        $select.append('<option value="'+ key +'">'+ value +'</option>');
                    });
                }
            });
        }else{
            $select.empty();
        }
    });
});

关于javascript - 如何在使用javascript和ajax时在for循环(laravel)中使用许多动态下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48933939/

相关文章:

javascript - 向网页添加 javascript 函数

php - Laravel 5 - API 请求不存在对象的全局异常处理程序

php - 撇号和引号不会从表单添加到 mysql

php - 为大型网站设计移动网站,需要您的意见

javascript - 使用 jquery 读取弹出窗口中输入字段的值时出现问题

ruby-on-rails - Ruby on Rails : Ajax to Refresh Partial Not Working

javascript - 如何在 JavaScript 中实现 "add new item"功能?

javascript - 如何在单击事件时触发 jQuery 函数但仅在页面加载后触发?

javascript - Javascript 中“new”和 "prototype.constructor"之间有什么联系?

javascript - 加载或创建字段时 JQuery 输入掩码失败