0

I'm stuck for calculate automatically with onchange text box.

I want to calculate with event onchange array input from array database.

HTML :

<td class="text-left"><input type="text" name="nilaia[]" id="nilaia" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilaib[]" id="nilaib" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilaic[]" id="nilaic" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilaid[]" id="nilaid" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilaie[]" id="nilaie" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="total[]"  id="total"  readonly="true" class="form-control"></td>

JS :

<script type="text/javascript">
function hitungtotal() {

    var i =  0;  
     while (i <= document.getElementsById('total').length) {

document.getElementById('total').value = parseInt(document.getElementById('nilaia[i]').value) + parseInt(document.getElementById('nilaib[i]').value) + parseInt(document.getElementById('nilaic[i]').value) + parseInt(document.getElementById('nilaid[i]').value) + parseInt(document.getElementById('nilaie[i]').value);

    i++;
}    
}
</script>
scott_lotus
  • 3,171
  • 22
  • 51
  • 69
Azizal Yunan P
  • 53
  • 1
  • 1
  • 9

3 Answers3

0

If you can change your input's name to same name, you can try following code:

HTML:

<td class="text-left"><input type="text" name="nilaia[]" id="nilaia" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilaia[]" id="nilaib" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilaia[]" id="nilaic" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilaia[]" id="nilaid" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilaia[]" id="nilaie" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="total[]"  id="total"  readonly="true" class="form-control"></td>

JS:

function hitungtotal(){
    var inputs = document.getElementsByName('nilaia[]');
    var sum = 0;
    for(var i = 0; i<inputs.length; i++){
      sum += parseInt(inputs[i].value);
    }
    document.getElementById('total').value = sum;

  }

fiddle: https://jsfiddle.net/xkuyxbof/

weigreen
  • 1,232
  • 8
  • 13
0

try this jquery answer

$('input[id^="nilai"]').change(function(){
         var total = 0;
         $('input[id^="nilai"]').each(function(){
            total+=parseFloat($(this).val());
         });
         $('#total').val(total);
});

https://jsfiddle.net/2d4cvrwz/

madalinivascu
  • 32,064
  • 4
  • 39
  • 55
0

Try this

<p>A function is triggered when the user is pressing a key in the input field.</p>
<td class="text-left"><input type="text" name="nilai" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilai" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilai" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilai" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" name="nilai" onchange="hitungtotal();" value="0" class="form-control"></td>
<td class="text-left"><input type="text" id="total" readonly="true" class="form-control"></td>

<script type="text/javascript">
function hitungtotal() {
    var elems = document.getElementsByName('nilai');
    var sum = 0;     
    for(var i =0;i<elems.length;i++){
    sum+=parseInt(elems[i].value)
    }
document.getElementById('total').value  = sum;

}
</script>
Dhanilan
  • 183
  • 1
  • 3
  • 15