2012-07-27 99 views
0

我有一些代码,在最后计算连续输入的总和,然后添加到以总计,下面这是目前工作的代码:jQuery的计算总输入

$(":text[name='qty[]'],:text[name='rate[]']").keyup(function() 
{ 
    var totalamount = 0.00; 
    $("ul.rowData").each(function() 
    { 
     var quantity = +$(this).find(":text[name='qty[]']").val() || 0; 
     var rate = +$(this).find(":text[name='rate[]']").val() || 0; 
     var subtotal = quantity * rate; 
     $(this).find(":text[name='price[]']").val(subtotal.toFixed(2)); 
     totalamount += subtotal; 
    }); 
    $("#totalprice").val(totalamount.toFixed(2)); 
}); 

现在我然后有一个附加排按钮,添加字段的一行:

$('.mainForm').find('.addItem').click(function() 
{ 
    $('.invoiceItems').append('<ul class="rowData">' + 
    '<li class="txtLg"><span class="sep">Item:</span><input type="text" name="item[]" maxlength="255" value=""></li>' + 
    '<li class="txtLg"><span class="sep">Description:</span><input type="text" name="description[]" maxlength="255" value=""></li>' + 
    '<li class="txtSm"><span class="sep">Rate:</span><input type="text" name="rate[]" maxlength="10" value="0.00"></li>' + 
    '<li class="txtSm"><span class="sep">Qty:</span><input type="text" name="qty[]" maxlength="5" value="1"></li>' + 
    '<li class="txtSm"><span class="sep">Price:</span><input type="text" name="price[]" maxlength="10" value="0.00"><input type="hidden" name="itemid[]" value="0"></li>' + 
    '</ul>').fadeIn(500); 
    return false; 
}); 

我的问题是,一旦我点击添加行中的字段中的总计不,当你添加数字,让他们自动计算。任何想法为什么?

回答

0

您绑定$().keyup(function(){}}不与动态添加到页面元素

$(":text[name='qty[]'],:text[name='rate[]']").live('keyup',function(){ 
    ... 
} 
+0

工作的伟大工程的感谢! – neoszion 2012-07-27 21:31:18

0

他们没有得到重新计算,因为没有代码来做到这一点:)

你基本上计算总,并补充说,到页面中。您需要一些额外的代码,在原件修改时重新计算这些总计。你可能会重新使用一些现有的代码。

看看.keyup().change() jQuery事件。每次释放键时都会触发前者,而只有在输入失去焦点时触发前者。您可能想要使用其中之一来更新总计字段;

$('.sep').on('change', function(e) { 
    // stuff 
});