2016-07-04 3 views
0

Как суммировать значения нескольких текстовых входов?Рассчитать сумму на основе полевых входов

В настоящее время сумма не подходит, так как продолжает удерживать память и суммировать предыдущие значения, которые ранее были в полях ввода.

У меня есть следующий код:

HTML:

<div class="form-group"> 
    <legend>Risicopotentieel</legend> 
    <label for="email">Email address:</label> 
    <select class="selectpicker" id="selectpicker1"> 
    <option value="1">text1</option> 
    <option value="2">text2</option> 
    <option value="3">text3</option> 
    <option value="4">text4</option> 
    </select> 
    <label for="email">Email address:</label> 
    <select class="selectpicker" id="selectpicker2"> 
    <option value="1">text1</option> 
    <option value="2">text2</option> 
    <option value="3">text3</option> 
    <option value="4">text4</option> 
    </select> 
    <label for="email">Email address:</label> 
    <select class="selectpicker" id="selectpicker3"> 
    <option value="1">text1</option> 
    <option value="2">text2</option> 
    <option value="3">text3</option> 
    <option value="4">text4</option> 
    </select> 
</div> 

<div class="form-group"> 
    <legend>Score</legend> 
    <label for="email">&nbsp;&nbsp;</label> 
    <input type="text" class="form-control" id="scorefield1"> 
    <label for="email">&nbsp;&nbsp;</label> 
    <input type="text" class="form-control" id="scorefield2"> 
    <label for="email">&nbsp;&nbsp;</label> 
    <input type="text" class="form-control" id="scorefield3"> 
    <label for="email">Totaalscore</label> 
    <input type="text" class="form-control" name="riskpottotalscore" id="riskpottotalscore"> 
</div> 

Этот код JQuery сначала копирует значение выбранной опции в поле ввода. Это прекрасно работает. После этого я хочу рассчитать сумму, и это значит, что это не так. Переменная totalPoints продолжает вспоминать свои оценки, но я только хочу, чтобы вычислить сумму над значениями, которые фактически выбраны в бальном поле 1, 2 и 3:

scorefieldrisk: function(){ 
    totalPoints = 0; 
    for (var i = 1; i <= 7; i++) { 
     (function (i) { 
      $('select[id$="selectpicker' + i + '"]').on("change", function() { 
       document.getElementById('scorefield'+i).value = this.value; 
       if(!isNaN(this.value) && this.value.length!=0) { 
        totalPoints +=(parseInt(this.value)); 
        document.getElementById('riskpottotalscore').value = totalPoints; 
       } 
      }); 
     })(i); 
    } 
}, 

ответ

2

Вы должны Пересоединть сумму от нуля каждый раз ,

Ваш код может быть упрощен, чтобы иметь только одну функцию в качестве обработчика для всех элементов select. Также вы можете использовать унитарный оператор + для преобразования строкового значения в число:

$('.selectpicker').on('change', function() { 
    totalPoints = 0; 
    $('.selectpicker').each(function() { 
     totalPoints += +this.value; 
    }); 
    $('#riskpottotalscore').val(totalPoints); 
}); 
Смежные вопросы