2016-07-04 5 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); 
});