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

如何在邻近输入文本框中显示计算结果?(多组输入框场景)

解决动态生成多组输入框的计算结果显示问题

嘿,我看你这问题主要出在事件绑定方式过时和DOM元素选择器错误上,还有HTML里的小细节需要调整,咱们一步步来解决:

1. 换掉过时的.live()方法

.live()早在jQuery 1.7就被废弃啦,对于PHP循环生成的动态元素,必须用事件委托的方式,通过.on()绑定到页面上固定存在的父元素(比如你可以把所有输入框放在一个带类名的容器里,比如div.input-group-container,如果没有合适的父级,用document也可以)。

2. 修正选择器,精准定位目标输入框

你原来的$(this).find('.usr input[type="text"]')完全找错了位置——当前输入框.locur所在的col-sm-3和目标输入框所在的col-sm-3是同级关系,不是父子关系。正确的路径应该是:

  • 先找到当前输入框的父级容器.col-sm-3
  • 再找到它的下一个同级的.usr容器
  • 最后在这个容器里找到目标输入框

3. 修复HTML里的重复ID问题

因为是循环生成多组,id="locale"和id="ustate"会重复,这违反HTML规范,要么去掉这些id(反正你用类名选元素),要么改成动态唯一id(比如id="locale-<?php echo $loopIndex; ?>"),这里咱们先直接去掉重复id。


修正后的完整代码

HTML部分(修复重复class和id)

<!-- 建议把所有输入框放在一个静态容器里,方便事件委托 -->
<div class="input-group-container">
  <div class="col-sm-3"> 
    <div class="input-group"> 
      <span class="input-group-addon icon_change"><i class="fa"></i></span> 
      <input type="text" class="form-control locur" name="locale[]" placeholder="Enter the value" maxlength="10" value="" /> 
    </div> 
  </div> 
  <div class="col-sm-3 usr"> <!-- 合并了重复的class属性 -->
    <div class="input-group"> 
      <span class="input-group-addon"><i class="fa fa-usr"></i></span> 
      <input type="text" class="form-control usr-input" name="ustate[]" placeholder="Enter the rate" maxlength="10" value="" /> 
    </div> 
  </div>
  <!-- 更多PHP循环生成的组... -->
</div>

jQuery部分(事件委托+正确选择器)

// 用事件委托绑定到静态容器上,确保动态生成的元素也能触发事件
$('.input-group-container').on('change', '.locur', function(){ 
  var local_id = $("#curr_id").val(); // 假设curr_id是页面上唯一的静态元素
  var amt = $(this).val(); 
  var convertedcost = convert_amt(amt, local_id); 
  
  // 精准定位到对应的目标输入框
  $(this).closest('.col-sm-3').next('.usr').find('.usr-input').val(convertedcost); 
});

额外提醒:如果convert_amt是异步函数

要是你的convert_amt是调用AJAX这类异步操作,得改成回调方式赋值,不然会拿不到结果:

// 改造convert_amt为带回调的版本
function convert_amt(amt, local_id, callback) {
  // 示例AJAX请求
  $.ajax({
    url: '/your-convert-api',
    data: {amount: amt, curr_id: local_id},
    success: function(result) {
      callback(result); // 拿到结果后调用回调
    }
  });
}

// 调用时
$('.input-group-container').on('change', '.locur', function(){ 
  var self = this; // 保存当前元素的上下文
  var local_id = $("#curr_id").val();
  var amt = $(this).val(); 
  
  convert_amt(amt, local_id, function(convertedcost) {
    $(self).closest('.col-sm-3').next('.usr').find('.usr-input').val(convertedcost); 
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:37:40