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

Laravel中如何在页面刷新后保留下拉框的选中值?

嘿,我碰到过一模一样的问题!在Laravel里要保留下拉框的选中状态,其实用Blade自带的工具就能轻松搞定,分两种常见场景给你讲:

场景1:表单提交后刷新/回退保留选中状态

这种情况适合用户提交表单后(比如验证失败跳转回页面),需要保留之前选中的选项。咱们可以用Laravel的old()辅助函数,它会自动存储上一次请求提交的表单数据。

修改你的Blade代码如下:

<select name="wallet_name" class="form-control selectpicker" data-live-search="true" id="wallet_name" required>
    <option value="">-- Select Banks --</option>
    @foreach($wallet_name as $wallet_names)
        <option value="{{ $wallet_names->id }}" {{ old('wallet_name') == $wallet_names->id ? 'selected' : '' }}>
            {{ $wallet_names->wallet_name }} ( $ {{ $wallet_names->currencies['name'] }} )
        </option>
    @endforeach
</select>

关键说明:

  • old('wallet_name')会获取上一次请求中wallet_name字段提交的值
  • 当用户提交表单后,只要你在控制器里用return redirect()->back()->withInput();(Laravel表单验证失败时会自动帮你做这一步),old()就能拿到对应的值,页面刷新或回退时就会自动选中之前的选项。

场景2:编辑页面从数据库加载选中值

如果是在编辑页面,需要默认选中数据库里已保存的钱包选项,咱们可以结合old()和数据库记录的值,兼顾表单提交错误回显的情况:

假设你有一个从数据库获取的$record变量(包含当前编辑记录的信息,比如$record->wallet_id是已选中的钱包ID),代码可以这么写:

<select name="wallet_name" class="form-control selectpicker" data-live-search="true" id="wallet_name" required>
    <option value="">-- Select Banks --</option>
    @foreach($wallet_name as $wallet_names)
        <option value="{{ $wallet_names->id }}" {{ (old('wallet_name') ?? $record->wallet_id) == $wallet_names->id ? 'selected' : '' }}>
            {{ $wallet_names->wallet_name }} ( $ {{ $wallet_names->currencies['name'] }} )
        </option>
    @endforeach
</select>

关键说明:

  • 用??空合并运算符,优先取old('wallet_name')(如果是表单提交错误回显的情况),如果没有这个值,就用数据库里的$record->wallet_id
  • 这样不管是编辑页面初始化加载,还是表单提交失败回退,都能正确保留选中状态

另外要注意,如果你用了selectpicker这个第三方插件,可能需要在页面加载完成后重新初始化插件,确保选中状态能正确渲染:

$(document).ready(function() {
    $('.selectpicker').selectpicker('refresh');
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:59:22