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

Laravel单选按钮状态保持问题求助:切换问题时选中状态丢失

解决单选按钮选中状态丢失的问题

嗨,这个问题的根源一眼就能看出来——你所有问题的单选按钮都共用了同一个name="opt"属性!单选按钮的规则是同一个name的选项属于同一组,互斥选择,所以你选了第二个问题的选项时,第一个问题的选中状态就会被自动取消,这就是状态丢失的原因。

解决方案:给每个问题的单选组添加唯一标识

我们需要让每个问题的选项组拥有独立的name,同时确保id属性唯一(页面内ID不能重复,否则label关联会出问题)。最简单的方式就是利用问题的id来区分,具体修改如下:

修改后的视图代码:

<h2>Welcome to Online Teacher Verification Test:</h2>
@foreach($qns as $qn)
    <h3>{{$qn->question_name}}</h3>
    <div class="form-check">
        <label class="form-check-label" for="opt1_{{$qn->id}}">
            <input type="radio" class="form-check-input" id="opt1_{{$qn->id}}" name="opt_{{$qn->id}}" value="opt1">{{$qn->opt1}}
        </label>
    </div>
    <div class="form-check">
        <label class="form-check-label" for="opt2_{{$qn->id}}">
            <input type="radio" class="form-check-input" id="opt2_{{$qn->id}}" name="opt_{{$qn->id}}" value="opt2">{{$qn->opt2}}
        </label>
    </div>
    <div class="form-check">
        <label class="form-check-label" for="opt3_{{$qn->id}}">
            <input type="radio" class="form-check-input" id="opt3_{{$qn->id}}" name="opt_{{$qn->id}}" value="opt3">{{$qn->opt3}}
        </label>
    </div>
    <div class="form-check">
        <label class="form-check-label" for="opt4_{{$qn->id}}">
            <input type="radio" class="form-check-input" id="opt4_{{$qn->id}}" name="opt_{{$qn->id}}" value="opt4">{{$qn->opt4}}
        </label>
    </div>
@endforeach

修改细节说明:

  • name属性:从name="opt"改成name="opt_{{$qn->id}}",这样每个问题的选项组都有了唯一名称,浏览器会把它们当成独立的单选组,互不干扰。
  • id和for属性:给id加上_{{$qn->id}}后缀,同时同步修改label的for属性,确保每个label只关联对应问题的选项,避免页面内ID重复导致的交互异常。
  • 额外给问题标题添加了<h3>标签,让每个问题的结构更清晰,用户体验更好。

这样修改后,你选中任意问题的选项,切换到其他问题时,之前的选中状态就会正常保留啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:38:05