Показать сообщение отдельно
  #1 (permalink)  
Старый 29.06.2018, 00:06
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 68

Суммировать выбранные значения из 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.
Подскажите, пож-та, в чем заключается ошибка? Может есть более лаконичное и правильное решение моей задачи.
Заранее спасибо
Ответить с цитированием