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

在Laravel Livewire中如何根据一个输入框的值设置另一个输入框的值

解决方案

第一步:在Livewire组件中声明绑定属性

你需要先在组件类中定义两个公共属性,和两个输入框做双向绑定,同时补充计算逻辑的异常判断避免除以0报错:

// Livewire 组件类
class YourComponent extends Component
{
    // 声明和输入框绑定的公共属性
    public float $rate = 0;
    public float $reverse_rate = 0;

    public function reverse()
    {
        // 避免输入0时出现除以0的错误
        if ($this->rate > 0) {
            $this->reverse_rate = floatval(1 / $this->rate);
        } else {
            $this->reverse_rate = 0;
        }
    }
}

第二步:修改视图输入框的绑定配置

给两个输入框加上wire:model属性和组件的公共属性绑定,同时修正原代码中倒数输入框type属性缺失闭合引号的问题:

<!-- Rate 输入框 -->
<x-input-group 
    type="number" 
    min="0"  
    step="0.0001"
    wire:model.lazy="rate"
    wire:focusout="reverse"
/>

<!-- 倒数输入框 -->
<x-input-group 
    type="number" 
    min="0" 
    step="0.0001"
    wire:model="reverse_rate"
/>

可选优化方案

如果不需要等到失焦才计算,想要rate输入变化后实时计算倒数,可以去掉手动绑定的wire:focusout事件,用Livewire自带的属性更新生命周期钩子自动触发计算:
组件代码修改为:

public float $rate = 0;
public float $reverse_rate = 0;

// rate属性更新时自动触发该方法
public function updatedRate()
{
    $this->reverse_rate = $this->rate > 0 ? floatval(1 / $this->rate) : 0;
}

对应视图的rate输入框简化为:

<x-input-group 
    type="number" 
    min="0"  
    step="0.0001"
    wire:model.live="rate"
/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:36:01