Calculating number of filled fields

Community Beginner ,
Feb 19, 2021 Feb 19, 2021

Copy link to clipboard

Copied

Hi all,

Long time lurker, first time poster. I am working in Adobe Acrobat Pro 2017, and created a fillable PDF for employee appraisals. To calculate the employee's score at the end of the form, I need to calculate the number of fields where text was entered (like the Excel "COUNTA" function) so I can divide that by the added total of ratings. I have everything figured out except the custom calculation script for totalling the number of fields that have text entered in them. I've spent the past 8 hours deep in the weeds in Google and this support community and have found numerous similar scenarios, but I can't get any of those scripts to work. I'm old, my brain is fried, I know zilch about JavaScript and would really, REALLY appreciate any insight or help.

 

For reference, the fields are named COM.01 through COM.18, and I just need to count the total number of fields containing text, leaving out any COM. fields that are blank.

 

Thanking you in advance.

TOPICS
Create PDFs, Edit and convert PDFs, JavaScript, PDF forms

Views

85

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct Answer

Adobe Community Professional , Feb 21, 2021 Feb 21, 2021
See if this works for you:var total = 0; var fields = this.getField("COM").getArray(); for (var i=0; i<fields.length; i++) { var f = (fields[i]).valueAsString; if (f !="") total++; } event.value = total;

Likes

Translate

Translate
Most Valuable Participant ,
Feb 19, 2021 Feb 19, 2021

Copy link to clipboard

Copied

You can use this code as the custom calculation script of your text field:

 

var total = 0;
var fields = this.getField("COM").getArray();
for (var i=0; i<fields.length; i++) {
	if (f.valueAsString!="") total++;
}
event.value = total;

 

If you want it to immediately display the relative amount of filled-in fields to the total, change the last line to:

event.value = total/fields.length;

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 19, 2021 Feb 19, 2021

Copy link to clipboard

Copied

Thank you very much. I copied and pasted that into the field where I need the result, but nothing happened when I entered text into the "COM." fields.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 19, 2021 Feb 19, 2021

Copy link to clipboard

Copied

Edit: I pasted it into the custom calculation script in the field where I  need the result. I AM TIRED, lol.

 

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Most Valuable Participant ,
Feb 19, 2021 Feb 19, 2021

Copy link to clipboard

Copied

Change the value of one of those fields and then check the JS Console (Ctrl+J) for error messages.

If you can't figure it out please share the file with us for further help.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Community Professional ,
Feb 21, 2021 Feb 21, 2021

Copy link to clipboard

Copied

See if this works for you:

var total = 0;
var fields = this.getField("COM").getArray();
for (var i=0; i<fields.length; i++) {
var f = (fields[i]).valueAsString;
if (f !="") total++;
}
event.value = total;

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 22, 2021 Feb 22, 2021

Copy link to clipboard

Copied

LATEST

This worked!!! Thank you SO MUCH!!! I can't tell you how much I appreciate it.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines