How do I increment a number in successive fields in a table column by 1 by a script or calculation?

Community Beginner ,
Jul 06, 2022 Jul 06, 2022

Copy link to clipboard

Copied

I have a table with 50 fillable rows; the first column indicates a line number. The field name is txtLnNo1 for the first, txtLnNo2 for the second, and so forth. I would like for it to auto-generate the line number in each field, and when an additional page is generated, have it start with the last number of the previous page plus 1 (i.e., for page 2, 51; for page 3, 101; etc.) I did this before in Adobe LiveCycle Designer at a previous job using a script like "this.rawValue = this.parent.index +1;" but with this job, I am using InDesign exported to Acrobat. I have attached the PDF for reference. Thank you for being so helpful.

TOPICS
How to , JavaScript

Views

86

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 2 Correct answers

Adobe Community Professional , Jul 07, 2022 Jul 07, 2022
Copy-paste this script in the JS Console, select all and hit ENTER. This script uses the field name number as the field value. It works regardless of the number of fields and the number of pages. for (var i = 0; i < this.numFields; i++) { var oFld = this.getField(this.getNthFieldName(i)); if ((oFld.type == "text") && (/txtLnNo/.test(oFld.name))) { var sNom = oFld.name.split("o"); var sSuffix = sNom.pop(); oFld.value = sSuffix; } }

Likes

Translate

Translate
Adobe Community Professional , Jul 07, 2022 Jul 07, 2022
Depending on what you want to do this script might be even better as it also assigns the value as the "default value" (orange line added). This allows a Reset/clear without deleting the fields value. for (var i = 0; i < this.numFields; i++) { var oFld = this.getField(this.getNthFieldName(i)); if ((oFld.type == "text") && (/txtLnNo/.test(oFld.name))) { var sNom = oFld.name.split("o"); var sSuffix = sNom.pop(); oFld.value = sSuffix; oFld.defaultValue = sSuffix; } }

Likes

Translate

Translate
Adobe Community Professional ,
Jul 07, 2022 Jul 07, 2022

Copy link to clipboard

Copied

Copy-paste this script in the JS Console, select all and hit ENTER.

This script uses the field name number as the field value.
It works regardless of the number of fields and the number of pages.

 

for (var i = 0; i < this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));
if ((oFld.type == "text") && (/txtLnNo/.test(oFld.name))) {
var sNom = oFld.name.split("o");
var sSuffix = sNom.pop();
oFld.value = sSuffix;
}
}

 

Capture_553.png

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 ,
Jul 07, 2022 Jul 07, 2022

Copy link to clipboard

Copied

Depending on what you want to do this script might be even better as it also assigns the value as the "default value" (orange line added).
This allows a Reset/clear without deleting the fields value.

 

for (var i = 0; i < this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));
if ((oFld.type == "text") && (/txtLnNo/.test(oFld.name))) {
var sNom = oFld.name.split("o");
var sSuffix = sNom.pop();

oFld.value = sSuffix;
oFld.defaultValue = sSuffix;
}
}

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 ,
Jul 07, 2022 Jul 07, 2022

Copy link to clipboard

Copied

Thank you so much, JR! This works great! When I later find the "add page" script I have saved and implement it, I will see how it will work with that.

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 ,
Jul 08, 2022 Jul 08, 2022

Copy link to clipboard

Copied

I have one more question about this script. When I use a script to spawn another page from the first, will the numbering continue from the last number on the previous page or restart at 1? Thank you again for your 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 ,
Jul 08, 2022 Jul 08, 2022

Copy link to clipboard

Copied

The script uses the number at the end of the field name (after the "o") to assign its value.
So the numbering will start at 1 on each new page.

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 ,
Jul 08, 2022 Jul 08, 2022

Copy link to clipboard

Copied

Thank you, JR. I saw that when you first presented the code, but it slipped my mind when I posted. My next step would be to find and tweak the script that spawns a new page to add 50 to the numbers at the end of the field names for the second page, 100 to the third page, and so on. 

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 ,
Jul 09, 2022 Jul 09, 2022

Copy link to clipboard

Copied

Will this template be hidden?

Is this the only page in the document or are there other different pages that can be interspersed?

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 ,
Jul 12, 2022 Jul 12, 2022

Copy link to clipboard

Copied

There will be other pages interspersed in the document. This particular page will be showing initially, and if more are needed for input, the user will press an "Add Page" button to generate additional pages. I currently have a simple script to generate one page at a time, but later, I look to add a prompt to input the number of pages to create multiples. This page is one of two tables that will need additional pages generated. This form was initially built in Excel, and the two tables have up to 500 rows for input. I am using InDesign to recreate them as fillable PDFs.

 

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 ,
Jul 13, 2022 Jul 13, 2022

Copy link to clipboard

Copied

Assuming this is the only page that can be spawned in the document this script will work.

It use the "spawned page number" instead of the page number (spawned fields are renamed like this: P1.templatexxxx.fieldName ) so it's independent of any interleaved pages.

 

 

for (var i = 0; i < this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));
if ((oFld.type == "text") && (/txtLnNo/.test(oFld.name))) {
if (oFld.page == 0) { // first page
var sNom = oFld.name.split("o");
var sSuffix = sNom.pop();

oFld.value = sSuffix;
oFld.defaultValue = sSuffix;
}
else { // spawned pages
var sNom = oFld.name.split("o");
var sSuffix = sNom.pop();
var sNom = oFld.name.split(".");
var sPrefix = sNom.shift();
var sPrefix = sPrefix.replace(/P/, "");
var n2Add = (50 * (Number(sPrefix)));

oFld.value = Number(n2Add) + Number(sSuffix);
oFld.defaultValue = Number(n2Add) + Number(sSuffix);
}
}
}

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 ,
Jul 13, 2022 Jul 13, 2022

Copy link to clipboard

Copied

Thank you, JR! There are two other pages to be spawned in the document, so will I be able to use the code on all three of them? They will all have the line number column (txtLnNo) to help the user distinguish the number of items and provide a sense of order within each table. Other than those three, all other pages in the document will not be spawned. There are nine pages, and I have six of them developed so far.  As I mentioned in a prior reply, this form document was originally built in Excel, where those three pages have 500 rows to have the capacity for large orders. There are nine pages, and I have six of them developed so far.

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 ,
Jul 14, 2022 Jul 14, 2022

Copy link to clipboard

Copied

LATEST

" will I be able to use the code on all three of them?"

You must run this script one time to fill the existing page, and you must run it each time a new page is spawned.

This will overwrite the already filled fields but it doesn't matter since it doesn't change their number.

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