Skip to main content
Participant
Aug 29, 2022 9:43 PM UTC
Answered

Calculate the Average of Selected Dropdown Fields Excluding Fields Not Yet Selected

Hey folks,

 

I have an evaluation form that is pretty straightforward, in which an evaluator determines a score of 13 criteria by selecting a value of 1-10 in a dropdown.  The dropdown has a blank value (perhaps a single space?), then 1-10 as individual options.  I have a text field that calucates the average of these scores through normal Acrobat functionality. The owner of the form, however, would like for the average to be calculated only by the specific dropdown boxes that have an actual selection. So, if the evaluator has only selected 8 values of the 13 possible, the average is calculated on those 8, rather than providing 5 false "zeros" into the calculation.  I hope this makes sense.  


The dropdowns are named sequentially (Score_1, Score_2, Score_3...).  

 

My Javascript is not strong, and I'm not sure how best to code a solution.  Any assistance would be appreciated.

This topic is closed to new replies. Start a new post to keep the conversation going.
Nesa Nurani
Nesa NuraniCorrect answer
Community Expert
Aug 30, 2022 4:44 AM UTC

In dropdown fields properties under 'Option' tab, select 'Commit selected value immediately'.

Use this as 'Custom calculation script' of text field:

var total = 0;
var x = 0;
for(var i=1; i<=13; i++){
if(this.getField("Score_"+i).valueAsString != " "){
x++;
total += Number(this.getField("Score_"+i).value);}}
if(x == 0)
event.value = "";
else
event.value = total/x;

5 replies

Nesa Nurani
Community Expert
Nesa NuraniCommunity ExpertCorrect answer
Community Expert
Aug 30, 2022 4:44 AM UTC

In dropdown fields properties under 'Option' tab, select 'Commit selected value immediately'.

Use this as 'Custom calculation script' of text field:

var total = 0;
var x = 0;
for(var i=1; i<=13; i++){
if(this.getField("Score_"+i).valueAsString != " "){
x++;
total += Number(this.getField("Score_"+i).value);}}
if(x == 0)
event.value = "";
else
event.value = total/x;

Translate
try67
Community Expert
Community Expert
Aug 31, 2022 9:25 AM UTC

You need to check if the denominator (ie. "x") is zero, not the numerator (ie. "total"), as it's division by zero that's not allowed, not dividing zero by something else.

Translate
Nesa Nurani
Community Expert
Community Expert
Aug 31, 2022 1:50 PM UTC

 Yes, you are right that is the proper way to set it and I have changed it, although in this case it was ok since both 'total' and 'x' are 0 or not 0 at the same time. Thanks 🙂

Translate