Calculate totals in Web Form Builder?...

User 187934 Photo


Senior Advisor
20,181 posts

Here ya go.;)
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
//ver 3.0
var jQ = $.noConflict(true);
jQ(document).ready(function(){
jQ("input[name^='COST']").attr('readonly', true);
jQ("input[name='TOTAL']").attr('readonly', true);
// Create expired date
var expiredDate = new Date("02/06/2018");
// Get today's date
var todaysDate = new Date();

jQ("input[name^='FUNC']").change(function() {
jQ("input[name^='COST']").val("");
var COST1 = 0;
var COST2 = 0;
var COST3 = 0;
var COST4 = 0;
var COST5 = 0;

jQ.each(jQ("input[name^='FUNC']:checked"), function(){
var name = jQ("input[name^='FUNC']:checked").attr("name");
var numbers = this.name.match(/\d+/);

// call setHours to take the time out of the comparison
if(expiredDate.setHours(0,0,0,0) > todaysDate.setHours(0,0,0,0)) {

//*** set the cost if before expired date for first FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Mbr Reg + 3 Meals"){
eval('var ADLT_Mbr_Reg_Meals' + numbers + '=80');}else {eval('var ADLT_Mbr_Reg_Meals' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Mbr Reg"){
eval('var ADLT_Mbr_Reg' + numbers + '=40');}else {eval('var ADLT_Mbr_Reg' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Reg + 3 Meals"){
eval('var COL_Mbr_Reg_Meals' + numbers + '=60');}else {eval('var COL_Mbr_Reg_Meals' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Reg"){
eval('var COL_Mbr_Reg' + numbers + '=30');}else {eval('var COL_Mbr_Reg' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Reg + 3 Meals"){
eval('var JOI_Mbr_Reg_Meals' + numbers + '=50');}else { eval('var JOI_Mbr_Reg_Meals' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Reg"){
eval('var JOI_Mbr_Reg' + numbers + '=25');}else { eval('var JOI_Mbr_Reg' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "Not Reg"){
eval('var Not_Reg' + numbers + '=0');}else { eval('var Not_Reg' + numbers + '=0');}



//*** set the cost if before expired date for second FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Lch"){
eval('var ADLT_Lch' + numbers + '=25');}else {eval('var ADLT_Lch' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Lch"){
eval('var COL_Mbr_Lch' + numbers + '=20');}else {eval('var COL_Mbr_Lch' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Lch"){
eval('var JOI_Mbr_Lch' + numbers + '=15');}else { eval('var JOI_Mbr_Lch' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "Child Lch"){
eval('var Child_Lch' + numbers + '=10');}else { eval('var Child_Lch' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "No Lch"){
eval('var No_Lch' + numbers + '=0');}else { eval('var No_Lch' + numbers + '=0');}




//*** set the cost if before expired date for third FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Din"){
eval('var ADLT_Din' + numbers + '=45');}else {eval('var ADLT_Din' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Din"){
eval('var COL_Mbr_Din' + numbers + '=10');}else {eval('var COL_Mbr_Din' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Din"){
eval('var JOI_Mbr_Din' + numbers + '=40');}else {eval('var JOI_Mbr_Din' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "Child Din"){
eval('var Child_Din' + numbers + '=10');}else { eval('var Child_Din' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "No Din"){
eval('var No_Din' + numbers + '=0');}else { eval('var No_Din' + numbers + '=0');}


//*** set the cost if before expired date for fourth FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Bft"){
eval('var ADLT_Bft' + numbers + '=25');}else {eval('var ADLT_Bft' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Bft"){
eval('var COL_Mbr_Bft' + numbers + '=20');}else {eval('var COL_Mbr_Bft' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Bft"){
eval('var JOI_Mbr_Bft' + numbers + '=15');}else {eval('var JOI_Mbr_Bft' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "Child Bft"){
eval('var Child_Bft' + numbers + '=10');}else { eval('var Child_Bft' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "No Bft"){
eval('var No_Bft' + numbers + '=0');}else { eval('var No_Bft' + numbers + '=0');}


}else{
//*** set the cost if after expired date for first FUNC ***//
//*** set the cost if before expired date for first FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Mbr Reg + 3 Meals"){
eval('var ADLT_Mbr_Reg_Meals' + numbers + '=90');}else {eval('var ADLT_Mbr_Reg_Meals' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Mbr Reg"){
eval('var ADLT_Mbr_Reg' + numbers + '=45');}else {eval('var ADLT_Mbr_Reg' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Reg + 3 Meals"){
eval('var COL_Mbr_Reg_Meals' + numbers + '=60');}else {eval('var COL_Mbr_Reg_Meals' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Reg"){
eval('var COL_Mbr_Reg' + numbers + '=40');}else {eval('var COL_Mbr_Reg' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Reg + 3 Meals"){
eval('var JOI_Mbr_Reg_Meals' + numbers + '=60');}else { eval('var JOI_Mbr_Reg_Meals' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Reg"){
eval('var JOI_Mbr_Reg' + numbers + '=30');}else { eval('var JOI_Mbr_Reg' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "Not Reg"){
eval('var Not_Reg' + numbers + '=0');}else { eval('var Not_Reg' + numbers + '=0');}



//*** set the cost if before expired date for second FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Lch"){
eval('var ADLT_Lch' + numbers + '=30');}else {eval('var ADLT_Lch' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Lch"){
eval('var COL_Mbr_Lch' + numbers + '=25');}else {eval('var COL_Mbr_Lch' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Lch"){
eval('var JOI_Mbr_Lch' + numbers + '=20');}else { eval('var JOI_Mbr_Lch' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "Child Lch"){
eval('var Child_Lch' + numbers + '=40');}else { eval('var Child_Lch' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "No Lch"){
eval('var No_Lch' + numbers + '=0');}else { eval('var No_Lch' + numbers + '=0');}




//*** set the cost if before expired date for third FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Din"){
eval('var ADLT_Din' + numbers + '=50');}else {eval('var ADLT_Din' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Din"){
eval('var COL_Mbr_Din' + numbers + '=45');}else {eval('var COL_Mbr_Din' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Din"){
eval('var JOI_Mbr_Din' + numbers + '=40');}else {eval('var JOI_Mbr_Din' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "Child Din"){
eval('var Child_Din' + numbers + '=10');}else { eval('var Child_Din' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "No Din"){
eval('var No_Din' + numbers + '=0');}else { eval('var No_Din' + numbers + '=0');}


//*** set the cost if before expired date for fourth FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Bft"){
eval('var ADLT_Bft' + numbers + '=30');}else {eval('var ADLT_Bft' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "COL Mbr Bft"){
eval('var COL_Mbr_Bft' + numbers + '=25');}else {eval('var COL_Mbr_Bft' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "JOI Mbr Bft"){
eval('var JOI_Mbr_Bft' + numbers + '=20');}else {eval('var JOI_Mbr_Bft' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "Child Bft"){
eval('var Child_Bft' + numbers + '=10');}else { eval('var Child_Bft' + numbers + '=0');}

if(jQ(this).is(':checked') && jQ(this).val() == "No Bft"){
eval('var No_Bft' + numbers + '=0');}else { eval('var No_Bft' + numbers + '=0');}

}

eval('var ADLT_MBR_REG_NUM_MEALS = ADLT_Mbr_Reg_Meals' + numbers);
eval('var ADLT_MBR_REG_NUM = ADLT_Mbr_Reg' + numbers);
eval('var COL_MBR_REG_MEALS_NUM = COL_Mbr_Reg_Meals' + numbers);
eval('var COL_MBR_REG_NUM = COL_Mbr_Reg' + numbers);
eval('var JOI_MBR_REG_MEALS_NUM = JOI_Mbr_Reg_Meals' + numbers);
eval('var JOI_MBR_REG_NUM = JOI_Mbr_Reg' + numbers);
eval('var NOT_REG_NUM = Not_Reg' + numbers);

eval('var ADLT_LCH_NUM = ADLT_Lch' + numbers);
eval('var COL_MBR_LCH_NUM = COL_Mbr_Lch' + numbers);
eval('var JOI_MBR_LCH_NUM = JOI_Mbr_Lch' + numbers);
eval('var CHILD_LCH_NUM = Child_Lch' + numbers);
eval('var NO_LCH_NUM = No_Lch' + numbers);

eval('var ADLT_DIN_NUM = ADLT_Din' + numbers);
eval('var COL_MBR_DIN_NUM = COL_Mbr_Din' + numbers);
eval('var JOI_MBR_DIN_NUM = JOI_Mbr_Din' + numbers);
eval('var CHLD_DIN_NUM = Child_Din' + numbers);
eval('var NO_DIN_NUM = No_Din' + numbers);

eval('var ADLT_BFT_NUM = ADLT_Bft' + numbers);
eval('var COL_MBR_BFT_NUM = COL_Mbr_Bft' + numbers);
eval('var JOI_MBR_BFT_NUM = JOI_Mbr_Bft' + numbers);
eval('var CHILD_BFT_NUM = Child_Bft' + numbers);
eval('var NO_BFT_NUM = No_Bft' + numbers);


//*** This passes the variable into the next cost input and sums the variables ***//
if(numbers == 11 || numbers == 12 ||numbers == 13 ||numbers == 14){

COST1 += Number(ADLT_MBR_REG_NUM_MEALS)
+Number(ADLT_MBR_REG_NUM)
+Number(COL_MBR_REG_MEALS_NUM)
+Number(COL_MBR_REG_NUM)
+Number(JOI_MBR_REG_MEALS_NUM)
+Number(JOI_MBR_REG_NUM)
+Number(NOT_REG_NUM)

+Number(ADLT_LCH_NUM)
+Number(COL_MBR_LCH_NUM)
+Number(JOI_MBR_LCH_NUM)
+Number(CHILD_LCH_NUM)
+Number(NO_LCH_NUM)

+Number(ADLT_DIN_NUM)
+Number(COL_MBR_DIN_NUM)
+Number(JOI_MBR_DIN_NUM)
+Number(CHLD_DIN_NUM)
+Number(NO_DIN_NUM)

+Number(ADLT_BFT_NUM)
+Number(COL_MBR_BFT_NUM)
+Number(JOI_MBR_BFT_NUM)
+Number(CHILD_BFT_NUM)
+Number(NO_BFT_NUM) ;
if(COST1 > 0){
jQ("input[name='COST1']").val(parseFloat(COST1).toFixed(2));
}
}
if(numbers == 21 || numbers == 22 ||numbers == 23 ||numbers == 24){

COST2 += Number(ADLT_MBR_REG_NUM_MEALS)
+Number(ADLT_MBR_REG_NUM)
+Number(COL_MBR_REG_MEALS_NUM)
+Number(COL_MBR_REG_NUM)
+Number(JOI_MBR_REG_MEALS_NUM)
+Number(JOI_MBR_REG_NUM)
+Number(NOT_REG_NUM)

+Number(ADLT_LCH_NUM)
+Number(COL_MBR_LCH_NUM)
+Number(JOI_MBR_LCH_NUM)
+Number(CHILD_LCH_NUM)
+Number(NO_LCH_NUM)

+Number(ADLT_DIN_NUM)
+Number(COL_MBR_DIN_NUM)
+Number(JOI_MBR_DIN_NUM)
+Number(CHLD_DIN_NUM)
+Number(NO_DIN_NUM)

+Number(ADLT_BFT_NUM)
+Number(COL_MBR_BFT_NUM)
+Number(JOI_MBR_BFT_NUM)
+Number(CHILD_BFT_NUM)
+Number(NO_BFT_NUM);

if(COST2 > 0){
jQ("input[name='COST2']").val(parseFloat(COST2).toFixed(2));
}
}
if(numbers == 31 || numbers == 32 ||numbers == 33 ||numbers == 34){

COST3 += Number(ADLT_MBR_REG_NUM_MEALS)
+Number(ADLT_MBR_REG_NUM)
+Number(COL_MBR_REG_MEALS_NUM)
+Number(COL_MBR_REG_NUM)
+Number(JOI_MBR_REG_MEALS_NUM)
+Number(JOI_MBR_REG_NUM)
+Number(NOT_REG_NUM)

+Number(ADLT_LCH_NUM)
+Number(COL_MBR_LCH_NUM)
+Number(JOI_MBR_LCH_NUM)
+Number(CHILD_LCH_NUM)
+Number(NO_LCH_NUM)

+Number(ADLT_DIN_NUM)
+Number(COL_MBR_DIN_NUM)
+Number(JOI_MBR_DIN_NUM)
+Number(CHLD_DIN_NUM)
+Number(NO_DIN_NUM)

+Number(ADLT_BFT_NUM)
+Number(COL_MBR_BFT_NUM)
+Number(JOI_MBR_BFT_NUM)
+Number(CHILD_BFT_NUM)
+Number(NO_BFT_NUM) ;
if(COST3 > 0){
jQ("input[name='COST3']").val(parseFloat(COST3).toFixed(2));
}
}
if(numbers == 41 || numbers == 42 ||numbers == 43 ||numbers == 44){

COST4 += Number(ADLT_MBR_REG_NUM_MEALS)
+Number(ADLT_MBR_REG_NUM)
+Number(COL_MBR_REG_MEALS_NUM)
+Number(COL_MBR_REG_NUM)
+Number(JOI_MBR_REG_MEALS_NUM)
+Number(JOI_MBR_REG_NUM)
+Number(NOT_REG_NUM)

+Number(ADLT_LCH_NUM)
+Number(COL_MBR_LCH_NUM)
+Number(JOI_MBR_LCH_NUM)
+Number(CHILD_LCH_NUM)
+Number(NO_LCH_NUM)

+Number(ADLT_DIN_NUM)
+Number(COL_MBR_DIN_NUM)
+Number(JOI_MBR_DIN_NUM)
+Number(CHLD_DIN_NUM)
+Number(NO_DIN_NUM)

+Number(ADLT_BFT_NUM)
+Number(COL_MBR_BFT_NUM)
+Number(JOI_MBR_BFT_NUM)
+Number(CHILD_BFT_NUM)
+Number(NO_BFT_NUM);
if(COST4 > 0){
jQ("input[name='COST4']").val(parseFloat(COST4).toFixed(2));
}
}
if(numbers == 51 || numbers == 52 ||numbers == 53 ||numbers == 54){

COST5 += Number(ADLT_MBR_REG_NUM_MEALS)
+Number(ADLT_MBR_REG_NUM)
+Number(COL_MBR_REG_MEALS_NUM)
+Number(COL_MBR_REG_NUM)
+Number(JOI_MBR_REG_MEALS_NUM)
+Number(JOI_MBR_REG_NUM)
+Number(NOT_REG_NUM)

+Number(ADLT_LCH_NUM)
+Number(COL_MBR_LCH_NUM)
+Number(JOI_MBR_LCH_NUM)
+Number(CHILD_LCH_NUM)
+Number(NO_LCH_NUM)

+Number(ADLT_DIN_NUM)
+Number(COL_MBR_DIN_NUM)
+Number(JOI_MBR_DIN_NUM)
+Number(CHLD_DIN_NUM)
+Number(NO_DIN_NUM)

+Number(ADLT_BFT_NUM)
+Number(COL_MBR_BFT_NUM)
+Number(JOI_MBR_BFT_NUM)
+Number(CHILD_BFT_NUM)
+Number(NO_BFT_NUM);
if(COST5 > 0){
jQ("input[name='COST5']").val(parseFloat(COST5).toFixed(2));
}
}


});
calctotal();



function calctotal(){
var total = 0;
jQ("input[name^='COST']").each(function(){
var value = jQ(this).val();
if(value >0 && jQ.isNumeric(value)){
total+=parseFloat(jQ(this).val(),10);
}
});
jQ("input[name=TOTAL]").val(total.toFixed(2))
}

});


});
</script>
I can't hear what I'm looking at.
It's easy to overlook something you're not looking for.

This is a site I built for my work.(RSD)
http://esmansgreenhouse.com
This is a site I built for use in my job.(HTML Editor)
https://pestlogbook.com
This is my personal site used for testing and as an easy way to share photos.(RLM imported to RSD)
https://ericrohloff.com
User 2076706 Photo


Registered User
72 posts

Thanks Eric,

Have fixed the variables and added your script.

It works localy but not on server (web). http://optimistsc.org/Meetings/Register/Register.html

What have I done wrong?
>don<
User 187934 Photo


Senior Advisor
20,181 posts

You have two lines of this at the top of the script.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Remove one.
I can't hear what I'm looking at.
It's easy to overlook something you're not looking for.

This is a site I built for my work.(RSD)
http://esmansgreenhouse.com
This is a site I built for use in my job.(HTML Editor)
https://pestlogbook.com
This is my personal site used for testing and as an easy way to share photos.(RLM imported to RSD)
https://ericrohloff.com
User 2076706 Photo


Registered User
72 posts

Thanks Eric,

Have it displaying as I want and running correctly except Payments (PayPal) which I'm sure has nothing to do with your script. It worked correctly at on time so, I've obviously changed a setting I should not have. I'll find it. :)

I really appreciate your work and patience!
>don<
User 2076706 Photo


Registered User
72 posts

Hi Eric,

I'm baaaaaaaaaack. :)

I'm now ready to go live so, need to correct the cost amounts.

For example have changed the "80" in this code
//*** set the cost if before expired date for first FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Mbr Reg + 3 Meals"){
eval('var ADLT_Mbr_Reg_Meals' + numbers + '=80');}else {eval('var ADLT_Mbr_Reg_Meals' + numbers + '=0');}

to "88" in corrected code
//*** set the cost if before expired date for first FUNC ***//
if(jQ(this).is(':checked') && jQ(this).val() == "ADLT Mbr Reg + 3 Meals"){
eval('var ADLT_Mbr_Reg_Meals' + numbers + '=88');}else {eval('var ADLT_Mbr_Reg_Meals' + numbers + '=0');}

Value of COST items don't change when checked.

What other changes do I need in the code to make it work?

Thanks,


>don<
User 187934 Photo


Senior Advisor
20,181 posts

On this line you changed it from 10 to 15 and left out a single quote at the 15
if(jQ(this).is(':checked') && jQ(this).val() == "Child Din"){
eval('var Child_Din' + numbers + '=15);}else { eval('var Child_Din' + numbers + '=0');}

Should be
if(jQ(this).is(':checked') && jQ(this).val() == "Child Din"){
eval('var Child_Din' + numbers + '=15');}else { eval('var Child_Din' + numbers + '=0');}
I can't hear what I'm looking at.
It's easy to overlook something you're not looking for.

This is a site I built for my work.(RSD)
http://esmansgreenhouse.com
This is a site I built for use in my job.(HTML Editor)
https://pestlogbook.com
This is my personal site used for testing and as an easy way to share photos.(RLM imported to RSD)
https://ericrohloff.com
User 2076706 Photo


Registered User
72 posts

Thanks, Eric.

Fixed that one and found same mistake in another place. Fixed it and now it works.

Will try to be more careful.
>don<
User 187934 Photo


Senior Advisor
20,181 posts

Great! Glad I could help out.
I can't hear what I'm looking at.
It's easy to overlook something you're not looking for.

This is a site I built for my work.(RSD)
http://esmansgreenhouse.com
This is a site I built for use in my job.(HTML Editor)
https://pestlogbook.com
This is my personal site used for testing and as an easy way to share photos.(RLM imported to RSD)
https://ericrohloff.com
User 2076706 Photo


Registered User
72 posts

Hi Eric,

Now have what i hope are final requirements from powers-that-be. Thought I had it before.

My updated from is at same place as before (http://optimistsc.org/Meetings/Register/Register.html).

Please give me updates (fixes) for the jQ code.

>don<
User 187934 Photo


Senior Advisor
20,181 posts

You'll need to explain what you need.
I can't hear what I'm looking at.
It's easy to overlook something you're not looking for.

This is a site I built for my work.(RSD)
http://esmansgreenhouse.com
This is a site I built for use in my job.(HTML Editor)
https://pestlogbook.com
This is my personal site used for testing and as an easy way to share photos.(RLM imported to RSD)
https://ericrohloff.com

Have something to add? We’d love to hear it!
You must have an account to participate. Please Sign In Here, then join the conversation.