• Resolved ascriptomat

    (@knuthbecker)


    I have a price calculator for a roof renovations (which is also on the homepage of the link). However, it is buggy.

    Fieldname11 are radio buttons indicating the roof type. This is conditional (i.e. “If selected show”), meaning that a further sub-category for the roof type pops up depending on the selected roof type. For instance, if “tegltag” is selected, fieldname3 is pops up.

    However, if “eternittag” > “b?lgeeternit” (fieldname12=0) > “Uden montering” (fieldname10=0) > “Tagets samlede antal kvadratmeter”=1 is selected, it shows a value of 350. One would, however, expect a value of 10000 from the calculated fields:

        if(fieldname12==0 && fieldname10==0)
            return 10000*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;

    I suspect it gets the 350 from the first line of code from the calculated fields:

        if(fieldname3==0 && fieldname10==0)
            return 350*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;

    The full code from the calculated fields is shown below. Does anyone know what the problem is?

    (function(){
        if(fieldname3==0 && fieldname10==0)
            return 350*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname3==1 && fieldname10==0)
            return 500*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname3==2 && fieldname10==0)
            return 300*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname3==3 && fieldname10==0)
            return 500*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname3==0 && fieldname10==1)
            return 700*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname3==1 && fieldname10==1)
            return 1100*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname3==2 && fieldname10==1)
            return 600*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname3==3 && fieldname10==1)
            return 1000*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname12==0 && fieldname10==0)
            return 10000*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname12==1 && fieldname10==0)
            return 650*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname12==2 && fieldname10==0)
            return 375*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname12==0 && fieldname10==1)
            return 640*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname12==1 && fieldname10==1)
            return 1230*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
        if(fieldname12==2 && fieldname10==1)
            return 750*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    })();

    The page I need help with: [log in to see the link]

Viewing 2 replies - 1 through 2 (of 2 total)
  • Plugin Author codepeople

    (@codepeople)

    Hello @knuthbecker

    Please, keep in mind that the values of dependent fields are zero when the dependent fields are disabled. If you select the “eternittag” option, the fieldname3 will be disabled because it is dependent on the “Tegltag” option. So, the first conditional statement will be satisfied, and the equation returns 350.

    The possible solutions:

    * Change the order of conditional statements from more specific to general
    * or check if the field has assigned the ignore class or not. For example:

    
    (function(){
        if(NOT(getField(fieldname3|n).jQueryRef().find('input').hasClass('ignore')))
    	{
    		if(fieldname3==0 && fieldname10==0)
    			return 350*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname3==1 && fieldname10==0)
    			return 500*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname3==2 && fieldname10==0)
    			return 300*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname3==3 && fieldname10==0)
    			return 500*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname3==0 && fieldname10==1)
    			return 700*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname3==1 && fieldname10==1)
    			return 1100*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname3==2 && fieldname10==1)
    			return 600*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname3==3 && fieldname10==1)
    			return 1000*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;		
    	}
    
    	if(NOT(getField(fieldname12|n).jQueryRef().find('input').hasClass('ignore')))
    	{
    		if(fieldname12==0 && fieldname10==0)
    			return 10000*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname12==1 && fieldname10==0)
    			return 650*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname12==2 && fieldname10==0)
    			return 375*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname12==0 && fieldname10==1)
    			return 640*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname12==1 && fieldname10==1)
    			return 1230*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    
    		if(fieldname12==2 && fieldname10==1)
    			return 750*fieldname2+fieldname5*4000+fieldname6+fieldname7+fieldname9*300;
    	}
    })();
    

    Best regards.

    Thread Starter ascriptomat

    (@knuthbecker)

    Thanks a lot! Lifesaver!

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Buggy price calculator – conditional statements’ is closed to new replies.