我使用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设置的前缀,在这种情况下是硬编码的。我想让上面的脚本为表中的任何一行运行。有什么建议吗?
答案 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;}