0

when i input 1 in #weeksinayear and 2 in #leaveweeks i get and answer of 12 which is wrong. Any help? Same applies when i enter maybe 30 at #weeksinayear and 10 at #leaveweeks i will get an answer of 3010.

<input type='text' id='weeksinayear'/>
<input type='text' id='leaveweeks'/>
<input type='text' id='totalweeksperyear'/>

$(document).ready(function(){

  $("#weeksinayear").keyup(function(){

        var weeksinayear = $("#weeksinayear").val();
        var leaveweeks = $("#leaveweeks").val();

      if(weeksinayear == ""){
                  var totalweeksperyear = $("#totalweeksperyear").val("");

      }else if(leaveweeks == ""){

                  var totalweeksperyear = $("#totalweeksperyear").val("");

      }else{

          var cal =  (weeksinayear) + (leaveweeks);

          var totalweeksperyear = $("#totalweeksperyear").val(cal);

      }


});
});
Bluevels
  • 39
  • 5
  • 2
    `.val()` returns strings ... `+` concatenates strings ... you want those strings to be numbers ... use unary + or parseInt or ParseFloat or Number – Jaromanda X Aug 14 '19 at 23:02
  • 1
    In order to understand why this is happening, you need to understand variable types. In short you are grabbing the value from a text field, which by default will be of type `string`. And you are trying to sum both of these, but that's not going to work, because they have to either be of type `int` or `number` or any other type that can be used for calculations. That's why you first need to convert `string` to `int` with for instance `parseInt()` function: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt . Also make sure to understand concept of `radix`. – Rens Tillmann Aug 14 '19 at 23:12

1 Answers1

-1

use parseInt()

Change the line to this

var totalweeksperyear = $("#totalweeksperyear").val(parseInt(weeksinayear,10) + parseInt(leaveweeks,10));
ATHER
  • 2,725
  • 4
  • 31
  • 50