You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10表单更新时如何获取关联下拉框选项值

解决Laravel更新表单中子分类下拉框默认显示所有选项的问题

问题核心是页面初始化时,子分类下拉框直接渲染了所有子分类数据,未根据当前选中的分类过滤。以下是具体修复方案:

1. 前端JS初始化触发分类加载

在jQuery代码中,页面加载完成后主动触发一次分类下拉框的change事件,自动加载当前选中分类对应的子分类:

$(document).ready(function () {
    $("#category").on("change", function () {
        var cid = $(this).val();
        if (cid) {
            $.ajax({
                url: "getSubcategory/" + cid,
                async: false
            }).done(function (data) {
                $("select#subcategory").html(data);
            });
        }
    });

    // 页面加载完成后主动触发change事件,加载对应子分类
    $("#category").trigger("change");
});

2. 优化Blade模板的子分类初始渲染(可选)

避免页面加载时短暂显示所有子分类,修改子分类下拉框,初始仅保留当前选中的子分类选项:

<div class="control-group"> 
    <label class="control-label">Sub Category</label> 
    <div class="controls">
        <select name="subcategory" id="subcategory" class="span8"> 
            <!-- 仅保留当前选中的子分类,后续由AJAX替换全部选项 -->
            @if($product->subcategory)
                @php
                    $selectedSub = $subcategory->where('sid', $product->subcategory)->first();
                @endphp
                @if($selectedSub)
                    <option value="{{$selectedSub->sid}}" selected>{{$selectedSub->sname}}</option>
                @endif
            @endif
        </select>
    </div>
</div>

3. 确保后端getSubcategory接口正确返回数据

检查控制器方法,确认能根据传入的cid返回对应子分类的选项HTML:

public function getSubcategory($cid)
{
    $subcategories = SubCategory::where('cid', $cid)->get();
    $html = '<option value="">选择子分类</option>';
    foreach ($subcategories as $sub) {
        $html .= '<option value="'.$sub->sid.'">'.$sub->sname.'</option>';
    }
    return $html;
}

修改完成后,页面加载时会自动根据当前选中的分类加载对应子分类,切换分类时也能正常更新下拉框内容。

内容的提问来源于stack exchange,提问作者Rani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:42:48