Суммировать выбранные значения из select и устанавливать в input
Здравствуйте.
Моя задача заключается в том что бы при выборе значения из селектов, сразу проставлялась сумма в последнем элементе строки(input Итоговое значение). Сам html c php следующий:
<tbody>
<? foreach ($arResult["UserQuestion"] as $key => $value): ?>
<tr><td>Отдел - <?= $key ?></td></tr>
<? foreach ($value as $ki => $inputquestion): ?>
<tr>
<td ><?= $ki ?></td>
<? foreach ($inputquestion as $kq => $questionvalue): ?>
<? foreach ($questionvalue as $kv => $que): ?>
<td><?if($que != "Итоговое значение") :?>
<select onchange="OnSelectionChange(this)" class="sel_val" name="val_name[<?=$ki?>][<?=$que?>][]"><option value=""></option><option value="1">1</option><option value="0">0</option><option value="-1">-1</option></select>
<?else :?>
<input name="val_name" class="itoginp" type="text" />
<?endif;?>
</td>
<? endforeach; ?>
<? endforeach; ?>
<? endforeach; ?>
</tr>
<? endforeach; ?>
</tbody>
На select установил событие onchange="OnSelectionChange(this)", функцию написал следующим образом:
function OnSelectionChange (_this) {
var tr = $(_this).closest('tr');//находим ближайшего родителя tr
var sum = 0;
//в родителе находим все селекты и суммируем значения
tr.find('.sel_val').each(function(){
sum += $(this).val();
});
//в родителе находим итоговый инпут и меняем итоговое значение
tr.find('.itoginp').val(sum);
}
Но итоговое значение в input всегда проставляется 0. Подскажите, пож-та, в чем заключается ошибка? Может есть более лаконичное и правильное решение моей задачи. Заранее спасибо |
<select>
<option value="0">0</option>
<option value="10">10</option>
<option value="20">20</option>
</select>
<select>
<option value="0">0</option>
<option value="10">10</option>
<option value="20">20</option>
</select>
<output></output>
<script>
var sel = document.querySelectorAll('select');
sel.forEach(el=>el.onchange = e => document.querySelector('output').value = [].reduce.call(sel, (c,el)=>c+el.value*1,0));
</script>
вот вам пример |
Цитата кода ТС:
"<? foreach ($arResult["UserQuestion"] as $key => $value): ?>" - а зачем столько вопросов, я не понял? Разве есть такой тэг-вопрос вообще? Парни, подскажите, пожалуйста. |
Цитата:
|
<table>
<tbody>
<tr><td>Отдел - 1</td></tr>
<tr>
<td>
<select onchange="OnSelectionChange(this)" class="sel_val">
<option value="0">0</option>
<option value="10">10</option>
<option value="20">20</option>
</select>
</td>
<td>
<select onchange="OnSelectionChange(this)" class="sel_val">
<option value="0">0</option>
<option value="10">10</option>
<option value="20">20</option>
</select>
</td>
<td>
<input name="val_name" class="itoginp" type="text" />
</td>
</tr>
</tbody>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
function OnSelectionChange (_this) {
var tr = $(_this).closest('tr');//находим ближайшего родителя tr
var sum = 0;
//в родителе находим все селекты и суммируем значения
tr.find('.sel_val').each(function(){
sum += +$(this).val();
});
//в родителе находим итоговый инпут и меняем итоговое значение
tr.find('.itoginp').val(sum);
}
</script>
|
| Часовой пояс GMT +3, время: 02:28. |