Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript

Number fields only do calculation once

Hi:

I'm trying to calculate some number fields, and display the totle price. However, when I delete(backspace) one number I was typing in, the totle price goes back to 0,

  1. For example, if I typed in 3 number fields, 5, 6, 7 - delect 5, the totle price will go back to 0, no matter there are still 6 and 7 left.

  2. Also, for example, when I delect all 3 fields, and type 5 back, there is still $0 on my totle price.

  3. Would you also tell me how to prevent the negative numbers?

thanks, below is my codes

$("#totle").val("0");
            $('.row input[type=number]').val("0");

            //1. calculate Catering Part
            function calcCatering(){
                $('.catering input[type=number]').each(function(){
                    $(this).defaultValue = 0;
                });
                var cateringTotlePrice = 0;

                var fruitsaladpailsQty       = parseInt($('input[name="saladfruitpails"]').val(),10);
                var muffinsQty               = parseInt($('input[name="muffins"]').val(),10);
                var sourdoughsandwichesQty   = parseInt($('input[name="sandwiches"]').val(),10);
                var assortedwrapsQty         = parseInt($('input[name="wraps"]').val(),10);
                var fruitplateQty            = parseInt($('input[name="minipails"]').val(),10);
                var selectionsaladregularQty = parseInt($('input[name="saladregular"]').val(),10);
                var selectionsaladlargeQty   = parseInt($('input[name="saladlarger"]').val(),10);
                var slidersQty               = parseInt($('input[name="sliders"]').val(),10);

                cateringTotlePrice = fruitsaladpailsQty*4.90 + 
                                     muffinsQty*4.90 +
                                     sourdoughsandwichesQty*8.90 +
                                     assortedwrapsQty*9.50 +
                                     fruitplateQty *60.00 +
                                     selectionsaladregularQty*8.90 +
                                     selectionsaladlargeQty*11.90 +
                                     slidersQty*4.90;

                //console.log(cateringTotlePrice);
                return cateringTotlePrice;

            }


            //2. calculate sandwiches Part
            function calcSandwiches(){
                var sandwichesTotlePrice = 0;
                var sandwichesOrderNumber = 0;  
                $('.sandwiches input[type=number]').each(function(){

                    $(this).defaultValue = 0;
                    sandwichesOrderNumber += parseInt($(this).val(),10);
                    console.log(sandwichesOrderNumber);
                });
                sandwichesTotlePrice = sandwichesOrderNumber*8.90;
                //console.log(sandwichesTotlePrice);
                return sandwichesTotlePrice;
            }


            //3. calculate wraps Part
            function calcWraps(){
                var wrapsTotlePrice = 0;
                var wrapsOrderNumber = 0;   
                $('.wraps input[type=number]').each(function(){

                    $(this).defaultValue = 0;
                    wrapsOrderNumber += parseInt($(this).val(),10);
                    console.log(wrapsOrderNumber);
                });
                wrapsTotlePrice = wrapsOrderNumber*9.50;
                //console.log(wrapsTotlePrice);
                return wrapsTotlePrice;
            }

            //4. calculate salad Part
            //regular salad
            function calcsaladregular(){
                var saladregularTotlePrice = 0;
                var saladregularOrderNumber = 0;    
                $('.salad input[name*="regular"]').each(function(){

                    $(this).defaultValue = 0;
                    saladregularOrderNumber += parseInt($(this).val(),10);
                    console.log(saladregularOrderNumber);
                });
                saladregularTotlePrice = saladregularOrderNumber*9.90;
                //console.log(saladregularTotlePrice);
                return saladregularTotlePrice;
            }

            //large salad
            function calcsaladlarge(){
                var saladlargeTotlePrice = 0;
                var saladlargeOrderNumber = 0;  
                $('.salad input[name*="large"]').each(function(){

                    $(this).defaultValue = 0;
                    saladlargeOrderNumber += parseInt($(this).val(),10);
                    console.log(saladlargeOrderNumber);
                });
                saladlargeTotlePrice = saladlargeOrderNumber*11.90;
                //console.log(saladlargeTotlePrice);
                return saladlargeTotlePrice;
            }


            //5. calculate slicedcake Part
            function calcslicedcake(){
                var slicedcakeTotlePrice = 0;
                var slicedcakeOrderNumber = 0;  
                $('.cake input[type=number]').each(function(){

                    $(this).defaultValue = 0;
                    slicedcakeOrderNumber += parseInt($(this).val(),10);
                    console.log(slicedcakeOrderNumber);
                });
                slicedcakeTotlePrice = slicedcakeOrderNumber*4.90;
                //console.log(slicedcakeTotlePrice);
                return slicedcakeTotlePrice;
            }


            //6. drinks
                //bruce cold
                function calcbrucecold(){
                var brucecoldTotlePrice = 0;
                var brucecoldOrderNumber = 0;   
                $('.brucecold input[type=number]').each(function(){

                    $(this).defaultValue = 0;
                    brucecoldOrderNumber += parseInt($(this).val(),10);
                    console.log(brucecoldOrderNumber);
                });
                brucecoldTotlePrice = brucecoldOrderNumber*5.00;
                //console.log(brucecoldTotlePrice);
                return brucecoldTotlePrice;
                }

                //kombucha
                function calcKombucha(){
                var kombuchaTotlePrice = 0;
                var kombuchaOrderNumber = 0;    
                $('.kombucha input[type=number]').each(function(){

                    $(this).defaultValue = 0;
                    kombuchaOrderNumber += parseInt($(this).val(),10);
                    console.log(kombuchaOrderNumber);
                });
                kombuchaTotlePrice = kombuchaOrderNumber*5.40;
                //console.log(kombuchaTotlePrice);
                return kombuchaTotlePrice;
                }

                //bottles
                //coke
                function calccoke(){
                var cokeTotlePrice = 0;
                var cokeOrderNumber = 0;    
                $('.bottles input[name*="coke"]').each(function(){

                    $(this).defaultValue = 0;
                    cokeOrderNumber += parseInt($(this).val(),10);
                    console.log(cokeOrderNumber);
                });
                cokeTotlePrice = cokeOrderNumber*4.00;
                //console.log(cokeTotlePrice);
                return cokeTotlePrice;
                }

                //water
                function calcWater(){

                var waterTotlePrice = 0;

                var waterQty          = parseInt($('input[name="water"]').val(),10);
                var mineralwaterQty   = parseInt($('input[name="sparkling_mineral_water"]').val(),10);


                waterTotlePrice = waterQty*4.00 + 
                                  mineralwaterQty *4.50;

                //console.log(waterTotlePrice);
                return waterTotlePrice;

            }







            function calcTotle(){
                var totlePrice = 0;
                totlePrice = (calcCatering()+
                                 calcSandwiches()+
                                 calcWraps()+
                                 calcsaladregular()+
                                 calcsaladlarge()+
                                 calcbrucecold()+
                                 calcKombucha()+
                                 calccoke()+
                                 calcWater()).toFixed(2);
                if(isNaN(totlePrice)){
                    $("#totle").text("$0");
                }else{
                    $("#totle").text("$"+totlePrice.toString());
                }
            }



            $('input[type=number]').keyup(function(){
                calcTotle();
            });