在Django formset字段中自动计算值

时间:2018-05-04 06:32:08

标签: javascript django django-forms formset

我使用Django formset允许用户一次为多行输入用户的股票详细信息。我有用户在每一行输入的价格和数量。我需要将这些值相乘并显示在用户输入值时每行的最后一列。 我试着写下面的javascript,这对于第一行工作正常。如何让它适用于整个表

function update() {
     document.getElementById("id_form-0-price").value = document.getElementById("id_form-0-quantity").value*document.getElementById("id_form-0-unitprice").value;
}

在字段名称' id_form-0-price' ,0是formset设置的前缀,在这种情况下是硬编码的。我想让上面的脚本为表中的任何一行运行。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我不完全确定这是否是您所要求的,但我非常确定这是您想要的答案。

function update(row) {
    document.getElementById(`id_form-${row}-price`).value = document.getElementById("id_form-${row}-quantity").value*document.getElementById("id_form-${row}-unitprice").value;
}

如果这是错误的答案,或者您需要其他代码(取决于您的处理方式),请在评论中告诉我,我们很乐意更新我的答案。

答案 1 :(得分:0)

我能够使用下面的代码让它工作。不确定它是否是一个优雅的解决方案。由django formset生成的行id从0开始,而表的行索引以1开始猜测。

function update(x) {
idx = x.parentElement.rowIndex-1;
var el_qty='id_form-'+idx+'-quantity';
var el_price='id_form-'+idx+'-price';
var el_uprice='id_form-'+idx+'-unit_price';
document.getElementById(el_price).value = document.getElementById(el_qty).value*document.getElementById(el_uprice).value;}