www.webdeveloper.com
Results 1 to 2 of 2

Thread: Javascript Math's help

  1. #1
    Join Date
    Apr 2012
    Posts
    202

    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,709
    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

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.09030 seconds
  • Memory Usage 2,886KB
  • Queries Executed 15 (?)
More Information
Template Usage (34):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (2)bbcode_code
  • (1)bbcode_html
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (2)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (70):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates