如何插入.each(function())

时间:2014-02-25 08:51:24

标签: javascript jquery

这是我的代码:

$("table.order-list").find('input[name^="total"]').each(function () {
        grandTotal += +$(this).val();
        valNum.find('input[name^="percentage"]').val((totalTime / grandTotal * 100).toFixed(1));
    });

如何在此代码中插入循环:valNum.find('input[name^="percentage"]').val((totalTime / grandTotal * 100).toFixed(1));。 我想循环或调用所有input[name^="percentage"]来重新计算公式。

如果您希望查看代码流,请点击以下链接:http://jsfiddle.net/Ellyse/47x2N/4/ 以下是它的工作原理:输入数量值并尝试通过点击复选框在第一行中插入值,它会自动计算总时间','百分比&#列39;,'时间估计'。对于第二行插入值相同,请注意第一行的百分比会发生变化,但是当您将所有百分比加起来时,它不是确切的结果,应该是100%。这就是为什么我要问如何在此代码中插入.each函数:valNum.find('input[name^="percentage"]').val((totalTime / grandTotal * 100).toFixed(1)); 这样就会重新计算公式。

1 个答案:

答案 0 :(得分:0)

修改

看了你的代码和正确的分析。我认为这是你一直在寻找的很长时间(至少3天):)。

在代码中替换整个js。我已经改变了很多代码。请在此处查看有效的演示:http://jsfiddle.net/khurram_khu/KYzQR/

$(document).ready(function () {
    $('td input[type="checkbox"]').click(function () {
        $(this).closest('tr').find('input[type="text"]').prop('disabled', !this.checked);
    }).change();
    $('input[name^="txt1"], input[name^="txt2"], #qty').on("keyup", function () {
        calculate();
    });
});

function calculate() {
    var grandTotal = 0;
    $('table.order-list tr input[name^="txt1"]:enabled').closest('tr').each(function () {
        var row = $(this);
        var qty = +$('#qty').val();
        var teo = +row.find('input[name^="txt1"]').val();
        var tep = +row.find('input[name^="txt2"]').val();
        var totalTime = (teo + (qty * tep)).toFixed(2);
        grandTotal += +totalTime;
        row.find('input[name^="total"]').val(totalTime);
    });

    var totalAll = $("#grandtotal").val(grandTotal.toFixed(2));
    $('#time').val((grandTotal / 60).toFixed(2));

    $('table.order-list tr input[name^="txt1"]:enabled').closest('tr').each(function () {
        var row = $(this);
        var totalTime = row.find('input[name^="total"]').val();
        row.find('input[name^="percentage"]').val((totalTime / grandTotal * 100).toFixed(1));
    });
}

我希望这就是你所需要的。如果这对您有帮助,请将此标记为答案。