www.webdeveloper.com
Results 1 to 2 of 2

Thread: Javascript Math's help

Hybrid View

  1. #1
    Join Date
    Apr 2012
    Posts
    39

    Javascript Math's help

    Hi

    I have the following coding in my website that add's or remove's prices to a quote page and works perfect but I need to insert another input field that takes the order total and divides it by 2

    Just wondering how I do that in this coding

    Below is the HTML

    HTML Code:
    <form name="checkbox">
            
            One Page<input type="checkbox" name="PROD_CH_70.00" value="70" onchange="CalculateTotal(this.form)">
            <br>
            Two Pages<input type="checkbox" name="PROD_CH_140.00" value="140" onchange="CalculateTotal(this.form)">
            <br>
            Three Pages(Bronze Package)<input type="checkbox" name="PROD_CH_179.00" value="179" onchange="CalculateTotal(this.form)">
            <br>
            Six Pages(Silver Package)<input type="checkbox" name="PROD_CH_339.00" value="339" onchange="CalculateTotal(this.form)">
            <br>
            Ten Pages(Gold Package)<input type="checkbox" name="PROD_CH_549.00" value="549" onchange="CalculateTotal(this.form)">
            <br>
            New Business Start up<input type="checkbox" name="PROD_CH_289.00" value="289" onchange="CalculateTotal(this.form)">
            <br>
            Ecommerce Package<input type="checkbox" name="PROD_CH_449.00" value="449" onchange="CalculateTotal(this.form)">
            <br>
            SEO on all pages<input type="checkbox" name="PROD_CH_30.00" value="449" onchange="CalculateTotal(this.form)">
            <br>
            Logo Design<input type="checkbox" name="PROD_CH_25.00" value="25" onchange="CalculateTotal(this.form)">
            
     <!--<input type="text" name="PROD_DC_15" size="10" maxlength="3" onchange="CalculateTotal(this.form)">
    <input type="text" name="PROD_CC_20" size="10" maxlength="3" onchange="CalculateTotal(this.form)">-->
    <br><br>
    <span style="color: #FFFFFF;"><input type="text" name="TOTAL" size="10" onfocus="this.form.elements[0].focus()
    ">  
    </span>
    </form>
    Below is the Javascript coding

    Code:
    function CalculateTotal(frm) {
            var order_total = 0
    
    
            // Run through all the form fields
            for (var i=0; i < frm.elements.length; ++i) {
    
    
                    // Get the current field
                    form_field = frm.elements[i]
    
    
                    // Get the field's name
                    form_name = form_field.name
    
    
                    // Is it a "product" field?
                    if (form_name.substring(0,4) == "PROD") {
    
    
                            // If so, extract the price from the name
                            item_price = parseFloat(form_name.substring(form_name.lastIndexOf("_") + 1))
    
    
                            // Get the quantity
                            if(form_field.type == 'checkbox') {
                                    item_quantity = form_field.checked;
                            } else {
                                    item_quantity = parseInt(form_field.value);                
                            }
    
    
                            // Update the order total
                            if (item_quantity >= 0) {
                                    order_total += item_quantity * item_price
                    
                     
    
    
                            }
                    }
            }
    
    
            // Display the total rounded to two decimal places
            frm.TOTAL.value = round_decimals(order_total, 2)
            }
    
    
            function round_decimals(original_number, decimals) {
            var result1 = original_number * Math.pow(10, decimals)
            var result2 = Math.round(result1)
            var result3 = result2 / Math.pow(10, decimals)
            return pad_with_zeros(result3, decimals)
             }
    
    
            function pad_with_zeros(rounded_value, decimal_places) {
    
    
            // Convert the number to a string
            var value_string = rounded_value.toString()
            
            // Locate the decimal point
            var decimal_location = value_string.indexOf(".")
    
    
            // Is there a decimal point?
            if (decimal_location == -1) {
                    
                    // If no, then all decimal places will be padded with 0s
                    decimal_part_length = 0
                    
                    // If decimal_places is greater than zero, tack on a decimal point
                    value_string += decimal_places > 0 ? "." : ""
            }
            else {
    
    
                    // If yes, then only the extra decimal places will be padded with 0s
                    decimal_part_length = value_string.length - decimal_location - 1
            }
            
            // Calculate the number of decimal places that need to be padded with 0s
            var pad_total = decimal_places - decimal_part_length
            
            if (pad_total > 0) {
                    
                    // Pad the string with 0s
                    for (var counter = 1; counter <= pad_total; counter++) 
                            value_string += "0"
                    }
            return value_string
            }

  2. #2
    Join Date
    Jun 2004
    Location
    Portsmouth UK
    Posts
    2,678
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    
    <head>
      <title></title>
    <script type="text/javascript">
    /*<![CDATA[*/
            function CalculateTotal(frm) {
                    var order_total = 0
    
    
                    // Run through all the form fields
                    for (var i=0; i < frm.elements.length; ++i) {
    
    
                            // Get the current field
                            form_field = frm.elements[i]
    
    
                            // Get the field's name
                            form_name = form_field.name
    
    
                            // Is it a "product" field?
                            if (form_name.substring(0,4) == "PROD") {
    
    
                                    // If so, extract the price from the name
                                    item_price = parseFloat(form_name.substring(form_name.lastIndexOf("_") + 1))
    
    
                                    // Get the quantity
                                    if(form_field.type == 'checkbox') {
                                            item_quantity = form_field.checked;
                                    } else {
                                            item_quantity = parseInt(form_field.value);
                                    }
    
    
                                    // Update the order total
                                    if (item_quantity >= 0) {
                                            order_total += item_quantity * item_price
    
    
    
    
                                    }
                            }
                    }
    
    
                    // Display the total rounded to two decimal places
                    frm.TOTAL.value = round_decimals(order_total, 2)
                    frm.TOTAL2.value = round_decimals(order_total/2, 2)
                    }
    
    
                    function round_decimals(original_number, decimals) {
                    var result1 = original_number * Math.pow(10, decimals)
                    var result2 = Math.round(result1)
                    var result3 = result2 / Math.pow(10, decimals)
                    return pad_with_zeros(result3, decimals)
                     }
    
    
                    function pad_with_zeros(rounded_value, decimal_places) {
    
    
                    // Convert the number to a string
                    var value_string = rounded_value.toString()
    
                    // Locate the decimal point
                    var decimal_location = value_string.indexOf(".")
    
    
                    // Is there a decimal point?
                    if (decimal_location == -1) {
    
                            // If no, then all decimal places will be padded with 0s
                            decimal_part_length = 0
    
                            // If decimal_places is greater than zero, tack on a decimal point
                            value_string += decimal_places > 0 ? "." : ""
                    }
                    else {
    
    
                            // If yes, then only the extra decimal places will be padded with 0s
                            decimal_part_length = value_string.length - decimal_location - 1
                    }
    
                    // Calculate the number of decimal places that need to be padded with 0s
                    var pad_total = decimal_places - decimal_part_length
    
                    if (pad_total > 0) {
    
                            // Pad the string with 0s
                            for (var counter = 1; counter <= pad_total; counter++)
                                    value_string += "0"
                            }
                    return value_string
                    }
    
    
    
    /*]]>*/
    </script></head>
    
    <body>
    <form name="checkbox">
    
            One Page<input type="checkbox" name="PROD_CH_70.00" value="70" onchange="CalculateTotal(this.form)">
            <br>
            Two Pages<input type="checkbox" name="PROD_CH_140.00" value="140" onchange="CalculateTotal(this.form)">
            <br>
            Three Pages(Bronze Package)<input type="checkbox" name="PROD_CH_179.00" value="179" onchange="CalculateTotal(this.form)">
            <br>
            Six Pages(Silver Package)<input type="checkbox" name="PROD_CH_339.00" value="339" onchange="CalculateTotal(this.form)">
            <br>
            Ten Pages(Gold Package)<input type="checkbox" name="PROD_CH_549.00" value="549" onchange="CalculateTotal(this.form)">
            <br>
            New Business Start up<input type="checkbox" name="PROD_CH_289.00" value="289" onchange="CalculateTotal(this.form)">
            <br>
            Ecommerce Package<input type="checkbox" name="PROD_CH_449.00" value="449" onchange="CalculateTotal(this.form)">
            <br>
            SEO on all pages<input type="checkbox" name="PROD_CH_30.00" value="449" onchange="CalculateTotal(this.form)">
            <br>
            Logo Design<input type="checkbox" name="PROD_CH_25.00" value="25" onchange="CalculateTotal(this.form)">
    
     <!--<input type="text" name="PROD_DC_15" size="10" maxlength="3" onchange="CalculateTotal(this.form)">
    <input type="text" name="PROD_CC_20" size="10" maxlength="3" onchange="CalculateTotal(this.form)">-->
    <br><br>
    <span style="color: #FFFFFF;"><input type="text" name="TOTAL" size="10" onfocus="this.form.elements[0].focus()"></span>
    <span style="color: #FFFFFF;"><input type="text" name="TOTAL2" size="10"></span>
    </form>
    </body>
    
    </html>
    Vic

    God loves you and will never love you less.

    http://www.vicsjavascripts.org/Home.htm
    If my post has been useful please donate to http://www.operationsmile.org.uk/

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles