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

如何通过Trade、Markup、Price输入框实现售价与加价的实时双向计算

实现方案

你的现有代码存在两个核心问题:

  • 没有判断触发计算的输入源,每次执行会同时覆盖Markup和Price两个输入框的值,逻辑冲突
  • change事件仅在输入框失焦时触发,要实现实时响应需替换为input事件

以下是可直接运行的修正代码:

JS代码

document.getElementById("trade").addEventListener("input", calculation);
document.getElementById("price").addEventListener("input", calculation);
document.getElementById("markup").addEventListener("input", calculation);

function calculation(e) {
    // 捕获当前触发计算的输入框
    const triggerId = e.target.id;
    const trade = parseFloat(document.getElementById("trade").value);
    const markup = parseFloat(document.getElementById("markup").value);
    const price = parseFloat(document.getElementById("price").value);

    // 贸易值为空/非法时不执行计算
    if (isNaN(trade) || trade <= 0) return;

    if (triggerId === 'markup' && !isNaN(markup)) {
        // 修改毛利率时自动计算售价
        document.getElementById("price").value = (markup * trade).toFixed(2);
    } else if (triggerId === 'price' && !isNaN(price)) {
        // 修改售价时自动反算毛利率
        document.getElementById("markup").value = (price / trade).toFixed(2);
    } else if (triggerId === 'trade') {
        // 修改贸易值时,优先按已有毛利率算售价,无毛利率则按售价算毛利率
        if (!isNaN(markup)) {
            document.getElementById("price").value = (markup * trade).toFixed(2);
        } else if (!isNaN(price)) {
            document.getElementById("markup").value = (price / trade).toFixed(2);
        }
    }
}

HTML代码(可选优化,增加输入限制)

<div class="form-group"><label>Trade</label><input type="number" id="trade" name="trade" min="0.01" step="0.01"></div>
<div class="form-group"><label>Price</label><input type="number" id="price" name="price" min="0.01" step="0.01"></div>
<div class="form-group"><label>Markup</label><input type="number" id="markup" name="markup" min="0" step="0.01"></div>

实现效果

  • 输入Trade值后,修改Markup实时计算对应Price
  • 直接输入Price实时反算出对应Markup
  • 修改Trade值时自动联动更新另一个字段
  • 所有计算实时触发,无需点击提交按钮

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:39:01