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

提交表单后如何保留下拉框选中值?(同页面提交)

表单提交后保留下拉框及单选按钮选中状态的解决方案

要解决表单提交到当前页面后保留下拉框、单选按钮选中状态的问题,结合你提供的Laravel Blade代码,只需借助Laravel的old()辅助函数,同时兼顾编辑场景和提交回显场景即可,具体修改如下:


1. 剧集下拉框(series)修改

原代码仅处理了编辑时的选中状态,添加old('series')判断来获取提交后的选中值:

<div class="form-group row">
    <label class="col-sm-3 col-form-label">{{trans('words.shows_text')}}*</label>
    <div class="col-sm-8">
        <select class="form-control select2" name="series" id="episode_series_id">
            <option value="">{{trans('words.select_show')}}</option>
            @foreach($series_list as $series_data)
                <option value="{{$series_data->id}}" 
                        @if( (isset($episode_info->id) && $series_data->id == $episode_info->episode_series_id) || old('series') == $series_data->id ) 
                            selected 
                        @endif>
                    {{$series_data->series_name}}
                </option>
            @endforeach
        </select>
    </div>
</div>

2. 季下拉框(season)修改

原代码仅在编辑场景下渲染选项,调整后确保提交失败时也能显示对应季列表,同时添加old('season')判断:

<div class="form-group row">
    <label class="col-sm-3 col-form-label">{{trans('words.seasons_text')}}*</label>
    <div class="col-sm-8">
        <select class="form-control select2" name="season" id="episode_season_id">
            <option value="">Select Season</option>
            @foreach($season_list as $i => $season_data)    
                <option value="{{ $season_data->id }}" 
                        @if( (isset($episode_info->id) && $season_data->id == $episode_info->episode_season_id) || old('season') == $season_data->id ) 
                            selected 
                        @endif>
                    {{ $season_data->season_name }}
                </option>    
            @endforeach
        </select>
    </div>
</div>

注意:控制器中需补充逻辑:当表单POST提交时,根据提交的series参数重新获取对应的season_list并传递到视图,确保提交后季下拉框有正确的选项。

3. 单选按钮回显处理

以name为status的单选按钮为例,同样结合old()和编辑场景判断:

<div class="form-group row">
    <label class="col-sm-3 col-form-label">状态*</label>
    <div class="col-sm-8">
        <div class="form-check">
            <input class="form-check-input" type="radio" name="status" value="active" 
                   @if( old('status') == 'active' || (isset($episode_info) && $episode_info->status == 'active') ) 
                       checked 
                   @endif>
            <label class="form-check-label">启用</label>
        </div>
        <div class="form-check">
            <input class="form-check-input" type="radio" name="status" value="inactive" 
                   @if( old('status') == 'inactive' || (isset($episode_info) && $episode_info->status == 'inactive') ) 
                       checked 
                   @endif>
            <label class="form-check-label">禁用</label>
        </div>
    </div>
</div>

核心原理

Laravel的old()函数会从session中读取上一次请求的输入值,优先于编辑场景的数据库值,完美适配表单提交失败后回显用户输入的场景;同时保留原有的$episode_info判断,确保编辑页面能正确显示数据库中的已有值。

内容的提问来源于stack exchange,提问作者Rafael Antonio Centeno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:55:25