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

如何使用jQuery将选中单选按钮值累加到用户输入计算总和

拍品金额计算器功能补全方案

你原代码中通过radio的change事件获取竞价服务费的思路是可行的,只需要补全逻辑、抽离公共计算方法即可实现需求,具体实现如下:

核心优化逻辑

  • 移除radio事件中冗余的多分支if判断,直接读取选中项的value转为数值即可,后续新增竞价档位无需修改JS逻辑
  • 将金额计算、字段渲染逻辑抽为独立公共函数,拍品金额输入、竞价方式切换两个操作都调用该函数,避免重复代码,保证数据实时同步
  • 初始化时读取默认选中的radio服务费值,避免初始状态下费用变量为空导致计算错误
  • 补充直播服务费字段渲染、服务费累加进总价的逻辑
  • 输入框新增input事件监听,兼容鼠标粘贴、点击数字控件调值的场景,更新更及时

修正后完整JS代码

$(document).ready(function() {
  // 初始化读取默认选中的竞价方式服务费
  let biddingFee = parseFloat($('input[type=radio][name=group1]:checked').val());
  const $lotValue = $("#lotValue"),
    $totalBid = $("#totalBid"),
    $buyersPremium = $("#buyersPremium"),
    $liveBiddingFee = $("#liveBiddingFee");

  // 统一计算与渲染函数
  function updateTotal() {
    const lotValue = parseFloat($lotValue.val());
    // 输入非法值时隐藏所有结果
    if (isNaN(lotValue)) {
      $buyersPremium.hide();
      $liveBiddingFee.hide();
      $totalBid.hide();
      return;
    }

    // 各部分金额计算
    const premiumVal = lotValue * 0.24;
    const finalPrice = lotValue + premiumVal + biddingFee;

    // 渲染所有展示字段
    $('.line').hide();
    $buyersPremium.fadeIn().find(".buyersPremiumNumber").text(premiumVal.toFixed(2));
    $liveBiddingFee.fadeIn().find("#price").text(biddingFee.toFixed(2));
    $totalBid.fadeIn().find(".totalBidNumber").text(finalPrice.toFixed(2));
  }

  // 竞价方式切换事件
  $('input[type=radio][name=group1]').change(function() {
    biddingFee = parseFloat(this.value);
    updateTotal();
  });

  // 拍品金额输入事件
  $lotValue.on('input keyup', function(e) {
    if (e.which === 13) return;
    updateTotal();
  });

  // 页面加载时自动触发一次计算,适配输入框带默认值的场景
  updateTotal();
});

HTML说明

原有HTML结构无需调整,可直接配合上述JS运行,最终总价计算规则为:
最终支付金额 = 拍品输入价值 + 拍品价值24%买家溢价 + 所选竞价方式对应直播服务费*

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:42:23