2

How to add value with attribute name="data[]" and put result to input with attribute name="total_data"?

When type input in data 1, data 2 etc, the result will appear in total data with additional. If I type value 1 in data 1 and type value 3 in data 2, total data will show value 4. How to do that?

<input name="data[]" type="number" class="input-data" value="" placeholder="data 1" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 2" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 3" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 4" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 5" /><br><br>
<input name="total_data" type="number" class="input-data" value="" placeholder="Total Data" />

1

4 Answers 4

3

You can do it like below:-

$('input[name="data[]"]').change(function(){
  var total = 0;
  $('input[name="data[]"]').each(function(){
     if($(this).val() !==''){
        total +=parseInt($(this).val());
      }
    
  });
  $('input[name="total_data"]').val(total);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 1" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 2" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 3" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 4" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 5" /><br><br>
<input name="total_data" type="number" class="input-data" value="" placeholder="Total Data" />

Note:- you can use keyup() also instead of change().

Sign up to request clarification or add additional context in comments.

2 Comments

thanks, thats working very well.. I replace change function to keyup function
@silviazulinka yes you can do that. I have just posted one way to do this. glad to help you
2

Try the following way:

$('.input-data').change(function(){
    var inputs = document.querySelectorAll('.input-data');
    var total = 0;
    inputs.forEach(function(node, index){
        if(node.value != ""){
            total += parseInt(node.value);
        }
    });
    document.getElementsByClassName('input-data-total')[0].value = total;
  })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input name="data[]" type="number" class="input-data" value="" placeholder="data 1" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 2" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 3" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 4" /><br><br>
<input name="data[]" type="number" class="input-data" value="" placeholder="data 5" /><br><br>
<input name="total_data" type="text" class="input-data-total" value="" placeholder="Total Data" />

Comments

1

Use a jquery function as below and call this function onchange event of data[] inputs. Code is written from memory and not tested

function doTotal(){
    var total=0;
    $("input[name='data[]']").each(function(){
       total+=$(this).val(); 
    });

    $("input [name='totalData']").val(total);
}

Comments

0

According to jQuery documentaion kaypress you can do it by every key press.

$('input[name="data[]"]').keypress(function(){
  var sum = 0;
  $('input[name="data[]"]').each(function(){
     if($(this).val() !==''){
        sum +=parseInt($(this).val());
      }

  });
  $('input[name="total_data"]').val(sum);

});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.