javascript — применить вычисления к столбцу в переполнении стека

Привет я выбираю некоторые данные из базы данных и строю таблицу.

foreach($data_array->LINEDETAILS as $data){
if(empty($data->CREDITEDAMOUNT)){
$data->CREDITEDAMOUNT=0;
}
$linetotal='';
$linetotal = $data->LINEAMOUNT + $data->TAXAMOUNT;
$column='<td>
<input onclick="sum_value(\''.trim($data->LINEAMOUNT).'-'.$data->TAXAMOUNT.'\',this.checked)" type="checkbox" name="checkdata'.$i.'" id="checkdata'.$i.'" value="'.$data->CUSTOMERTRXLINEID.'"style="position: inherit;" checked  />
</td>
<td>'.$data->DESCRIPTION.'</td>
<td>'.$data->ORIGINALLINEAMOUNT.'</td>
<td>'.$data->CREDITEDAMOUNT.'</td><td>'.$data->LINEAMOUNT.'<input type="text" value="'.$data->LINEAMOUNT.'" hidden="true"></td>
<td>'.$data->TAXAMOUNT.'</td><td>'.$linetotal.'</td>
<td>
<select>
<option>--</option>
<option>%</option>
<option>Area</option>
<option>Period In Months</option>
</select>
</td>
<td><input type="text"></td>
<td><input type="text"></td>';
$row .= '<tr>'.$column.'</tr>';
$grandtotal = $grandtotal + $data->LINEAMOUNT + $data->TAXAMOUNT;
$i++;
}

Этот код возвращает от одной до многих строк данных.
введите описание изображения здесь

Каждый лайк имеет выпадающий список из 3 значений, в зависимости от того, какие расчеты будут сделаны. Если я выберу% и Стоимость кредита как 80%, утвержденная сумма строки должно быть рассчитано на 80% Допустимая сумма строки.
Я попытался установить идентификаторы для каждого элемента и выполнить математику, используя JavaScript, он не рассчитает и не даст результат. это дает ошибку, поскольку идентификатор элемента должен быть уникальным, а поскольку элементы зациклены, идентификатор также зацикливается. Пожалуйста помоги.

1

Решение

Попробуйте: «onChange» из раскрывающегося значения, а затем извлеките значение% и вычислите в своем коде javascript и отобразите в требуемом поле и пометьте поле как доступное только для чтения, если хотите, чтобы оно «не» было изменилось.

Вы можете динамически добавлять id для каждого элемента, как в цикле. Abd после этого извлекать все записи до максимального значения или итерации (скажем, i)

0

Другие решения

Вы можете добавить класс в каждое поле ввода. Например,

jQuery('.credit_val').change(function(){
var eligible = parseFloat(jQuery(this).parents('tr').find('.eligible_line').text());
var credit = parseFloat(jQuery(this).val());

jQuery(this).parents('tr').find('.approve_amount').val(eligible*credit/100);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>
<div class="eligible_line">1000</div>
</td>
<td>
<input class = "credit_val">
</td>
<td>
<input class = "approve_amount">
</td>
</tr>
<tr>
<td>
<div class="eligible_line">2000</div>
</td>
<td>
<input class = "credit_val">
</td>
<td>
<input class = "approve_amount">
</td>
</tr>
</table>
0