0

我有一些代码可以连续计算输入的总数,然后在最后添加到总计,这是当前工作的代码如下:

$(":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;
});

我的问题是,一旦我单击添加行,当您向字段中添加数字时,字段中的总数不会自动计算。任何想法为什么?

4

2 回答 2

0

他们不会被重新计算,因为没有代码可以做到这一点:)

您基本上是在计算总数,并将其添加到页面中。您需要一些额外的代码,以便在修改原件时重新计算这些总数。您可能会重新使用一些现有的代码顺便说一句。

看看.keyup().change()jQuery 事件。前者将在每次释放键时触发,而后者仅在输入失去焦点时触发。您可能希望使用两者之一来更新总计字段;

$('.sep').on('change', function(e) {
  // stuff
});
于 2012-07-27T19:55:59.650 回答
0

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

$(":text[name='qty[]'],:text[name='rate[]']").live('keyup',function(){
   ...
}
于 2012-07-27T19:58:35.247 回答