You are viewing limited content. For full access, please sign in.

Question

Question

javascript suddenly stopperd working

asked on January 26, 2016 Show version history

Everything was working fine a while ago. then suddenly its not working. when i click preview nothing is being calculated as it was supposed to according to the javascript code.


$(document).ready(function () {
      
    $('.cf-table-block').on('blur', 'input', sumtotal);
     $(document).on('click', '.form-del-field', sumtotal);  
      $('.subtotalreadonly input').attr('readonly', true);
      $('.totalreadonly input').attr('readonly', true);
  

 function sumtotal() {      
        var sum = 0;
        var bf = 0;     
        var lunch = 0, dinner = 0, hotel = 0 , mileageamount = 0;
        var taxis =0, travel =0, misc =0, mileage = 0, totalsubtotal=0, finaltotal= 0;
      
      
        $('.cf-table-block tbody tr').each(function () {
          var s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0, s8=0;
          
          $(this).find('.breakfast input').each(function () {   
            debugger;
                 s1 = parseNumber($(this).val());
                bf += parseNumber($(this).val());
             $('.bfsubtotal input').val(bf);
            });
          
          $(this).find('.lunch input').each(function () {
                 s2 = parseNumber($(this).val());
                lunch += parseNumber($(this).val());
            $('.lunchsubtotal input').val(lunch);
            });
          
          $(this).find('.dinner input').each(function () {
                s3 = parseNumber($(this).val());
                dinner += parseNumber($(this).val());
            $('.dinnersubtotal input').val(dinner);
            });
          
          $(this).find('.hotel input').each(function () {
                s4 = parseNumber($(this).val());
                hotel += parseNumber($(this).val());
            $('.hotelsubtotal input').val(hotel);
            });


var rowTotal = s1 + s2 + s3 + s4;
          
            $(this).find('.rowTotal input').val(rowTotal);
                     
            $(this).find('.rowTotal input').each(function () {
                totalsubtotal += parseNumber($(this).val());
           $('.totalsubtotal input').val(totalsubtotal);
           });


}

function parseNumber(n) {
        var f = parseFloat(n); //Convert to float number.
       return isNaN(f) ? 0 : f; //treat invalid input as 0;
   }
  
});

 

0 0

Replies

replied on January 26, 2016

When javascript stops working, that usually means you are missing a brace someplace. Turns out you are missing a "})" right before the "parseNumber" function above the brace. Your code should be:

$(document).ready(function () {
      
    $('.cf-table-block').on('blur', 'input', sumtotal);
     $(document).on('click', '.form-del-field', sumtotal);  
      $('.subtotalreadonly input').attr('readonly', true);
      $('.totalreadonly input').attr('readonly', true);
  

 function sumtotal() {      
        var sum = 0;
        var bf = 0;     
        var lunch = 0, dinner = 0, hotel = 0 , mileageamount = 0;
        var taxis =0, travel =0, misc =0, mileage = 0, totalsubtotal=0, finaltotal= 0;
      
      
        $('.cf-table-block tbody tr').each(function () {
          var s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0, s8=0;
          
          $(this).find('.breakfast input').each(function () {   
            debugger;
                 s1 = parseNumber($(this).val());
                bf += parseNumber($(this).val());
             $('.bfsubtotal input').val(bf);
            });
          
          $(this).find('.lunch input').each(function () {
                 s2 = parseNumber($(this).val());
                lunch += parseNumber($(this).val());
            $('.lunchsubtotal input').val(lunch);
            });
          
          $(this).find('.dinner input').each(function () {
                s3 = parseNumber($(this).val());
                dinner += parseNumber($(this).val());
            $('.dinnersubtotal input').val(dinner);
            });
          
          $(this).find('.hotel input').each(function () {
                s4 = parseNumber($(this).val());
                hotel += parseNumber($(this).val());
            $('.hotelsubtotal input').val(hotel);
            });

 

var rowTotal = s1 + s2 + s3 + s4;
          
            $(this).find('.rowTotal input').val(rowTotal);
                     
            $(this).find('.rowTotal input').each(function () {
                totalsubtotal += parseNumber($(this).val());
           $('.totalsubtotal input').val(totalsubtotal);
           });

 });

}

function parseNumber(n) {
        var f = parseFloat(n); //Convert to float number.
       return isNaN(f) ? 0 : f; //treat invalid input as 0;
   }
  
});

 

1 0
replied on January 26, 2016

Good find, Chris! Don't forget the semicolon too.

;)

replied on January 27, 2016

Thanks a lot chris. yes the issue is i am missing one of the close braces. 

0 0
You are not allowed to follow up in this post.

Sign in to reply to this post.