I have a form that is summing up the total items the user has selected based on form boxes. I used a tutorial online and everything is working fine but I have a curve ball. Everything I have seen sums the “value” of the checkbox. I need some help totaling a different variable inside the form. Here is an example:
[code=html]<input type=”checkbox” name=”ProductID[]” value=”Prod1″ cost=”10″/>
<input type=”checkbox” name=”ProductID[]” value=”Prod2″ cost=”5″/>
<input type=”checkbox” name=”ProductID[]” value=”Prod3″ cost=”8″/>
I need to pass the Product IDs as an array to my next page but I need to total the cost.
The current function I am using inside my form is this:
[CODE]onclick=’this.form.total.value=calculateTotal(this);’
Here is the associated function:
[CODE]// Calculate the total for items in the form which are selected.
function calculateTotal(inputItem) {
with (inputItem.form) {
// Process each of the different input types in the form.
if (inputItem.type == “radio”) { // Process radio buttons.
// Subtract the previously selected radio button value from the total.
calculatedTotal.value = eval(calculatedTotal.value) – eval(previouslySelectedRadioButton.value);
// Save the current radio selection value.
previouslySelectedRadioButton.value = eval(inputItem.value);
// Add the current radio button selection value to the total.
calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);
} else { // Process check boxes.
if (inputItem.checked == false) { // Item was uncheck. Subtract item value from total.
calculatedTotal.value = eval(calculatedTotal.value) – eval(inputItem.value);
} else { // Item was checked. Add the item value to the total.
calculatedTotal.value = eval(calculatedTotal.value) + eval(inputItem.value);
}
}
// Total value should never be less than 0.
if (calculatedTotal.value < 0) {
InitForm();
}
// Return total value.
return(formatCurrency(calculatedTotal.value));
}
}
// Format a value as currency.
function formatCurrency(num) {
num = num.toString().replace(/$|,/g,”);
if(isNaN(num))
num = “0”;
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = “0” + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3)) + ‘,’ + num.substring(num.length-(4*i+3));
return (((sign)?”:’-‘) + ‘$’ + num + ‘.’ + cents);
}
// This function initialzes all the form elements to default values.
function InitForm() {
// Reset values on form.
document.selectionForm.total.value=’$0′;
document.selectionForm.calculatedTotal.value=0;
document.selectionForm.previouslySelectedRadioButton.value=0;
// Set all checkboxes and radio buttons on form to unchecked.
for (i=0; i < document.selectionForm.elements.length; i++) {
if (document.selectionForm.elements.type == ‘checkbox’ | document.selectionForm.elements.type == ‘radio’) {
document.selectionForm.elements.checked = false;
}
}
}
My experience is with php and none of my trial and error approaches have worked with this form… What do I need to do to total the cost instead of the value?