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

如何修改jQuery动态生成的输入框值,实现自动填充兼支持手动修改?

问题核心原因

你的重量输入框无法修改,是因为recalc函数每次执行都会强制用产品自带的默认重量覆盖输入框的值,且所有输入操作都会触发该函数,手动输入的内容会被立即冲掉。

解决方案

调整逻辑拆分,仅在切换产品选项时填充重量默认值,计算小计的逻辑不再修改重量输入框内容,即可同时满足自动生成默认值、支持手动修改的需求。

修改后完整代码

JS部分

var numRows = 2, ti = 5;

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

// 仅负责计算小计,不修改重量输入值
function recalc() {
  $('#kas_table').find('tr').each(function() {
    var berat = parseFloat($(this).find('input.berat').val()) || 0;
    var qty = parseFloat($(this).find('input.qty').val()) || 0;
    var subtotal = (berat * qty);
    $(this).find('input.subtotal').val(Math.round(subtotal * 100) / 100);
  });
}

$(function() {
  // 仅切换产品选项时,填充重量默认值
  $('div.table-responsive').on("change", '.nama', function() {
    const $currentRow = $(this).closest('tr');
    const defaultWeight = $(this).find('option:selected').data('berat');
    if(defaultWeight) {
      $currentRow.find('input.berat').val(defaultWeight);
    }
    recalc();
  });

  // 数量、重量修改时触发小计计算
  $('div.table-responsive').on("keyup change blur", '.qty, .berat', recalc);
});

var i=0;
$('#add_new').click(function(){
  i++;
  $('#mainbody').append('<tr><td>' +
    '<select class="form-control nama" name="addmore['+i+'][nama]" id="nama'+i+'" required >' +
    '<option disabled="disabled" selected="selected" value="" >Select Produk</option>' +
    '<option value="1" data-berat="100">Item 1</option>' +
    '<option value="2" data-berat="170">Item 2</option>' +
    '</select></td>' +
    '<td><input class="form-control qty" type="number" name="addmore['+i+'][qty]" id="qty'+i+'" required ></td>' +
    '<td><input step=".001" class="form-control berat" type="number" name="addmore['+i+'][berat]" id="berat'+i+'" required ></td>' +
    '<td><input class="form-control subtotal" type="number" name="addmore['+i+'][subtotal]" id="subtotal'+i+'" required readonly></td>' +
    '</tr>'
  )
});

HTML部分和原有代码一致即可

主要调整说明

  • 拆分了赋值和计算逻辑,避免每次计算都覆盖重量输入值
  • 细化了事件绑定规则,不同操作触发对应逻辑,减少无意义的执行
  • 增加了数值容错处理,空输入默认转为0,避免计算出现NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:15:03