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

基于Laravel Livewire实现下拉选择框联动自动填充输入框

实现下拉选择框联动自动填充输入框(Laravel Livewire)

嘿,这个联动需求在Livewire里实现起来很顺畅,我给你梳理下具体步骤:

第一步:在Livewire组件中添加联动逻辑

我们可以利用Livewire的生命周期钩子,当课程描述(corsdes)的选中值变化时,自动匹配对应的课程编号(corsno)。在你的组件类里补充以下代码:

public $corsdes;
public $corsno;
public $subjects;

public function mount()
{
    // 初始化加载课程数据,和你原来的逻辑一致
    $this->subjects = DB::table('programs_subj')->select('corsdes', 'corsno')->get();
}

// 当corsdes属性更新时自动触发这个方法
public function updatedCorsdes($selectedCorsdes)
{
    // 从已加载的课程集合中找到对应的课程编号
    $matchedSubject = $this->subjects->firstWhere('corsdes', $selectedCorsdes);
    
    // 如果找到匹配项就填充corsno,没有匹配项则清空输入框
    $this->corsno = $matchedSubject ? $matchedSubject->corsno : '';
}

第二步:调整前端视图代码

你的下拉框有个小细节需要修正:第一个选项的value设置不合理,而且wire:model不需要加到<option>标签上。另外建议把课程编号输入框设为只读(避免用户手动修改,如果你需要允许修改可以去掉这个属性)。修改后的视图代码如下:

<select name="corsdes" id="corsdes" wire:model="corsdes">
    <option value="">请选择课程描述</option>
    @foreach($subjects as $sbj)
        <option value="{{ $sbj->corsdes }}">{{ $sbj->corsdes}}</option>
    @endforeach
</select>
<input type="text" name="corsno" id="corsno" wire:model="corsno" readonly>

逻辑说明

当你选择下拉框里的某个课程描述时,Livewire会自动同步组件的corsdes属性,同时触发updatedCorsdes方法。这个方法会从提前加载的subjects集合里找到对应的课程编号,赋值给corsno属性,而输入框因为绑定了wire:model="corsno",会实时更新显示这个值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:27:40