如何从第一个下拉列表中删除选中的值,这样它就不会出现在第二个下拉列表中,(值直接来自数据库)[Laravel]

7eumitmz  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(103)
<div class="form-group mb-3">
                        <label for="">food 1 </label>
                        <select name="food1" class="js-example-basic-single" style="width: 100%;">
                        @foreach($items as $item)
                        <option value="{{ $item->name }}">{{ $item->name }}</option>
                        @endforeach
                    </select>
                    </div> 
                    <div class="form-group mb-3">
                        <label for="">food 2</label>
                        <select name="food2" class="js-example-basic-single" style="width: 100%;">
                        @foreach($items as $item)
                        <option value="{{ $item->name }}">{{ $item->name }}</option>
                        @endforeach
                    </select>
                    </div>

尝试使用javascript,但它不工作。尝试了这么多的东西
更新日期:
公共函数存储(请求$request){

if ($request->food1=$request->food2)
{
    echo($request->food1);
    echo($request->food2);
    echo("Wrong");
}
else
{
    $project = new Project;
    $project->food1 = $request->input('food1');
    $project->food2 = $request->input('food2');
    $project->save();
    return redirect()->back()->with('status','Added Successfully');
}

}
第一个总是返回错误。当我尝试echo时,突然food1和food2总是有相同的值。当我删除if函数时,只需要使用新项目并插入,它实际上在数据库中的food1和food2中显示了2个不同的值。

i1icjdpr

i1icjdpr1#

如果你不想从数据库中删除数据,你可以使用jquery很容易通过以下步骤:
1.为第二个选择标签中的所有选项添加ID。
1.添加第一个选择ID。
1.通过ajax调用服务器端并再次重建food2下拉列表。

$(document).ready(function() {
            $("#optionselect").change(function() {
                var values = $("#optionselect option:selected");
                var selectd = values.text();
                                    $.ajaxSetup({
                        headers: {
                            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                        }
                    });
                    $.post('site-address', {

                            ajax: true,
                            procedure: 'food-loader',
                            selected: selectd

                        },
                        function(data, status) {
                       //loading food2 options     

            });
        });
<div class="form-group mb-3">
        <label for="">food 1 </label>
        <select id="optionselect" name="food1" class="js-example-basic-single" style="width: 100%;">
            @foreach ($items as $item)
                <option  value="{{ $item->name }}">{{ $item->name }}</option>
            @endforeach
        </select>
    </div>
    <div class="form-group mb-3">
        <label for="">food 2</label>
        <select id="food2" name="food2" class="js-example-basic-single" style="width: 100%;">
            @foreach ($items as $item)
                <option id="{{ $item->name }}" value="{{ $item->name }}">{{ $item->name }}</option>
            @endforeach
        </select>
    </div>

在这个解决方案中,你应该从后端处理重建列表。ajax发送选定参数到服务器,并获得新数据列表,然后重建选择选项。对于安全问题,我在ajax中使用post

ldxq2e6h

ldxq2e6h2#

你可以在这里使用 AJAX 。

  • 更改第一个下拉菜单时使用 AJAX 调用
  • 在 AJAX 中,发送选定项的值
  • 在后端,返回数据库中除选定值以外的所有项目
  • 现在使用javascript/jQuery更新第二个下拉列表。

相关问题