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

如何用JavaScript/jQuery实现根据父输入值动态生成多级联动输入框

实现方案

核心改造逻辑如下:

  • 放弃固定ID绑定逻辑,改用事件委托监听所有动态生成的输入框变更事件
  • 每次输入框值变更时,先移除当前输入框之后所有动态生成的输入行,避免重复生成冗余节点
  • 当输入值不等于100时,动态创建新的输入行,计算差值自动赋值给新输入框

完整代码

CSS

.dynamic-row {
  margin-top: 10px;
}
.dynamic-row-hidden {
  display: none;
}
.dinput {
  padding: 4px 6px;
}

HTML

<!-- 初始输入框 -->
<div class="input-group">
  <input class="dynamic-input dinput" required="required" type="text" />
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

JavaScript

(function($) {
  var minNumber = 0;
  var maxNumber = 100;

  // 事件委托适配所有动态生成的输入框
  $(document).on("change", ".dynamic-input", function() {
    var $currentInput = $(this);
    // 清空当前输入框后续所有动态生成的输入节点
    $currentInput.closest('.input-group').nextAll('.input-group').remove();

    // 输入值格式化处理
    var inputVal = parseFloat($currentInput.val().replace("%", "")) || 0;
    inputVal = inputVal < minNumber ? 0 : inputVal;
    inputVal = inputVal > maxNumber ? 100 : inputVal;
    $currentInput.val(inputVal + "%");

    // 差值不为0时生成下一级输入框
    if (inputVal !== 100) {
      var nextVal = 100 - inputVal;
      var $newGroup = $('<div class="input-group dynamic-row"></div>');
      var $newInput = $('<input class="dynamic-input dinput" required="required" type="text" />');
      $newInput.val(nextVal + "%");
      $newGroup.append($newInput);
      $currentInput.closest('.input-group').after($newGroup);
    }
  });
})(jQuery);

效果说明

  • 第一个输入框输入40失焦后,自动生成第二个输入框显示60%
  • 修改第二个输入框值为30失焦后,自动生成第三个输入框显示70%
  • 任意层级输入框值修改为100时,后续所有输入框自动移除,不再生成新的输入节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:06:01