Javascript Django formset字段中的自动计算值

Javascript Django formset字段中的自动计算值,javascript,django,django-forms,formset,Javascript,Django,Django Forms,Formset,我使用Django formset允许用户一次在多行中输入用户的库存详细信息。我在每行中都有用户输入的价格和数量。我需要将此值相乘,并在用户输入值时在每行的最后一列中显示。 我试着按照下面的方式编写javascript,它可以很好地用于第一行。我如何使它适用于整个表 function update() { document.getElementById("id_form-0-price").value = document.getElementById("id_form-0-quant

我使用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设置的前缀,在本例中是硬编码的。我想让上面的脚本对表中的任何行运行。有什么建议吗?

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

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

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

我能够使用下面的代码使其正常工作。不确定这是否是一个优雅的解决方案。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;}

这看起来与所需的非常接近。但是我无法使其工作。是否有标准方法将“row”id参数传递给上述函数?具体取决于。你能再给我一些代码吗,比如你在哪里调用update()函数?我已经添加了一个很好的答案。调用看起来像这样。{{field}}如果不看更多他的代码,就不可能知道这是否有效——更具体地说,是他的HTML.Lachlan,我自己添加了工作解决方案作为答案。它正在工作。但不确定它是否是最佳解决方案。