Это мой код:
$("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/ Здесь как это работает: Введите значения в количестве и попробуйте вставить значения в первую строку, нажав checkbox, он автоматически вычислит столбец "Общее время", "Процент", "Оценка времени". То же самое для значений вставки второй строки, обратите внимание, что процент для первой строки изменяется, но это не точный результат для этого, когда вы добавляете весь процент, он должен быть 100%. Вот почему я спрашиваю, как вставить эту функцию в этот код: valNum.find('input[name^="percentage"]').val((totalTime/grandTotal * 100).toFixed(1));
так что он пересчитает формулу.
РЕДАКТИРОВАТЬ:
После просмотра кода и правильного анализа. Я думаю, что это то, что вы искали с очень долгого времени (не менее 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));
});
}
Надеюсь, это то, что вам нужно. Если это поможет вам отметить это как ответ.
.each
послеfind('input[name^="percentage"]')
как вы сделали в первой строке?