Jquery - 克隆元素的总和不适用于函数的输入

时间:2016-01-19 18:24:21

标签: javascript jquery input

这是我的代码:

$(document).ready(function() {
  $('#clone').click(function() {
    var target = $(this).closest('.groupcontainer');
    target.clone(true, true).insertAfter(target);
  });

  $('.input').on('input',function(){
    $(this).parent().children('.grouptotal').val($(this).val() * $(this).parent().children('.input2').val());
  });

  $('.input2').on('input', function(){
    $(this).parent().children('.grouptotal').val($(this).val() * $(this).parent().children('.input').val());
  });
});  

$(document).on('change', '.grouptotal', function(){
  var sum = 0;
    $('.grouptotal').each(function(){
    sum += +$(this).val();
    });
    $('#subtotal').val(sum);
});

我的问题是我需要#subtotal添加.grouptotal的每个实例,但#subtotal在从

获取输入时不会更新
$('.input').on('input',function(){
  $(this).parent().children('.grouptotal').val($(this).val() * 
  $(this).parent().children('.input2').val());
  });

$('.input2').on('input', function(){
  $(this).parent().children('.grouptotal').val($(this).val() *   
  $(this).parent().children('.input').val());
  });
如果我在#subtotal手动输入数字,

.grouptotal会更新。有人可以向我解释我错过了什么吗?

这是Fiddle。它看起来很草率,但它提出了这个想法。

数量*系统会自动更新我的.grouptotal

如何制作#subtotal .grouptotal并自动添加?我已经尝试将$(document).on('change', '.grouptotal', function(){“更改”改为“输入”和其他几个,但没有运气。

此外,如果单击#clone按钮复制组,它必须有效。

2 个答案:

答案 0 :(得分:0)

使用val('value')以编程方式设置值时,change事件未被触发,您必须实际触发它

$(this).parent().children('.grouptotal').val( $(this).val() ).trigger('change')

答案 1 :(得分:0)

让我们再试一次。显然,以编程方式更改grouptotal值不会触发更改事件。我本以为会这样,所以你的代码对我来说是正确的。但是,为了解决这个问题,我添加了一个'.grouptotal'的显式触发器。您可以看到fiddle here

只需添加代码:

('.grouptotal').change();

两个从输入中求和的处理程序。这可能不是您正在寻找的解决方案,但似乎有效