ianhaney Posted February 2, 2013 Share Posted February 2, 2013 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 <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 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 } Quote Link to comment Share on other sites More sharing options...
Jessica Posted February 2, 2013 Share Posted February 2, 2013 What have you tried? Quote Link to comment Share on other sites More sharing options...
ianhaney Posted February 2, 2013 Author Share Posted February 2, 2013 Nothing yet to be honest as was trying to work out where to put a / etc in the javascript but could not work it out Quote Link to comment Share on other sites More sharing options...
Jessica Posted February 2, 2013 Share Posted February 2, 2013 Well try something and then we can help. You need to make an effort Quote Link to comment Share on other sites More sharing options...
ianhaney Posted February 2, 2013 Author Share Posted February 2, 2013 I have had a go and did manage to get the order total to divide by two by adding / 2 on the end of the following order_total += item_quantity * item_price So took that out and then inserted the new input field and called it DEPOSIT in the name part and also added the following in // Display the total rounded to two decimal places frm.DEPOSIT.value = round_decimals(order_total, 2) } Then tried to do the following if (item_quantity >= 0) { order_total += item_quantity * item_price; else { order_total += item_quantity * item_price / 2; } but that didn't work as that just made both input fields do nothing so took it out again and at the mo it displays the order total in both input fields see the following link http://www.irhwebsites.co.uk/quote.html Quote Link to comment Share on other sites More sharing options...
ianhaney Posted February 2, 2013 Author Share Posted February 2, 2013 Solved it I can paste the coding if need be Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.