В моем html есть следующее:
<table id = 'manifest-table25' class="manifest-table2" width=100%>
<tbody width=100%>
<tr class="manifest-row">
<td width = 17.5%>{{form2.ProductCode}}</td>
<td width = 32.5%>{{form2.DescriptionOfGoods}}</td>
<td width = 12.5% class="quantity">{{form2.UnitQty}}</td>
<td width = 12.5%>{{form2.Type}}</td>
<td width = 12.5% oninput="calculate()">{{form2.Price}}</td>
<td width = 12.5%>{{form2.Amount}}</td>
</tr>
</tbody>
</table>
У меня есть функция calculate()
, называемая oninput для поля Price, которая умножает UnitQty * Price и отображает результат в Amount.
<script>
function calculate() {
var UnitQty = document.getElementById('id_form-0-UnitQty').value;
var Price = document.getElementById('id_form-0-Price').value;
var LineTotal = UnitQty * Price;
$('#id_form-0-Amount').val(LineTotal);
}
</script>
Это прекрасно работает, но жестко запрограммировано для использования этих указанных c идентификаторов. Моя дилемма в том, что у пользователя есть возможность динамически добавлять строки в эту таблицу, и это будет работать только для одной строки. Таким образом, если пользователь добавляет еще одну строку, очевидно, что вышеприведенное является жестко закодированным и не применяется к этой новой строке. Функция, вызываемая для новой строки, должна была бы эффективно выглядеть следующим образом:
<script>
function calculate() {
var UnitQty = document.getElementById('id_form-1-UnitQty').value;
var Price = document.getElementById('id_form-1-Price').value;
var LineTotal = UnitQty * Price;
$('#id_form-1-Amount').val(LineTotal);
}
</script>
Поэтому мне нужен какой-то способ динамического выбора замены идентификаторов в этой функции, на основе которого фактически вводится текст. Полностью застрял при обдумывании подхода, может кто-нибудь помочь с этим?