Автовычисление значения в поле формы Django - PullRequest
0 голосов
/ 04 мая 2018

Я использую набор форм Django, чтобы позволить пользователю вводить данные о запасах для пользователя в несколько строк одновременно. У меня есть цена и количество, введенные пользователем в каждой строке. Мне нужно умножить эти значения и показать в последнем столбец для каждой строки, когда пользователь вводит значение. я попытался написать 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 голосов
/ 07 мая 2018

Мне удалось заставить его работать, используя приведенный ниже код. Не уверен, является ли это элегантным решением. Идентификатор строки, сгенерированный набором форм django, начинается с 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;}
0 голосов
/ 04 мая 2018

Я не совсем уверен, если это то, что вы спрашиваете, но я уверен, что это ответ, который вы хотите.

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

Если это неправильный ответ, или вам нужен дополнительный код (в зависимости от того, как вы работаете), сообщите мне об этом в комментарии, и я буду рад обновить мой ответ.

...