这是我的代码:
$(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
按钮复制组,它必须有效。
答案 0 :(得分:0)
使用val('value')
以编程方式设置值时,change
事件未被触发,您必须实际触发它
$(this).parent().children('.grouptotal').val( $(this).val() ).trigger('change')
答案 1 :(得分:0)
让我们再试一次。显然,以编程方式更改grouptotal值不会触发更改事件。我本以为会这样,所以你的代码对我来说是正确的。但是,为了解决这个问题,我添加了一个'.grouptotal'的显式触发器。您可以看到fiddle here。
只需添加代码:
('.grouptotal').change();
两个从输入中求和的处理程序。这可能不是您正在寻找的解决方案,但似乎有效