Skip to main content
M.Hasanin
Inspiring
April 27, 2018
Answered

The Proper Way of Using the Global Varibale

  • April 27, 2018
  • 1 reply
  • 981 views

Hi Experts..

its my first time to deal with the Global Object inside the Acro Form, because its also the first time to work with 2 pages in form not only 1

so i noticed that  calculations in the page 2 not working..the code is here , is just Text Field Formatted as Percentage Number that will show the Amount of Check Boxes (if Checked by the user) as Percentage..

I write the following code in (Custom Calculation Script) inside 16 (Text Field with the Same Kind) in every pages of the two,  because every one of percentage is responsible for monitoring 20 Check box Group in one row repeated in 16 row (as Shown in the Loop), this code was working fine until i add the second page, its still working in page 1 of the form but it stopped working in page 2

CallPeriod();

// Initialize counter variable

var sum = 0;

// Loop through the fields

for (var i = 1; i<=20;i++) {

// Add one if check box is not Off

    if (getField("A" + i).value !== "Off") {sum += 1;}

}

// Set this field's value to the sum

var SumFinal = (sum / PeriodNumber.value);

event.value = SumFinal > 1 ? 1 : SumFinal ;

i figure out that the main problem in page 2 that it not receiving the correct local variable (PerionNumber,value) , this Variable was previously called from other Text field under Custom Calculation Script in page one with the script - this was working well when the form was One page

var PeriodNumber =this.getField("PeriodVar");

I  Tried to fix the Problem and Create the Call Period Function (Document Java Script) that Supposed to be the new Solution of the Global Variables and Call this function from (Page Open JavaScript) from the two pages, Because i dont know what is the right way to call it!, also i call this function inside the custom calculation script show above, here is the script

function CallPeriod()

{

global.PeriodNumber =this.getField("PeriodVar");

}

now my question simply what the logical error i miss! that not letting the two pages read the correct value from the global variable, or how to do this in the right way, i read the JS API docs and Some articles but when i see the examples it wasnt match my problem and also maybe i miss understand, any help will be Appreciated  and Thanks in Advance.

This topic has been closed for replies.
Correct answer Thom Parker

You don't need to use a global variable.

Simply acquire the field value when you need it.

For example, here is the modified line of code from your post:

var SumFinal = (sum / this.getField("PeriodVar").value); 

You should also learn to debug with the console window, there's a tutorial on it here:

Free Video Content & Full Listing of Available Videos

1 reply

Thom Parker
Community Expert
Thom ParkerCommunity ExpertCorrect answer
Community Expert
April 28, 2018

You don't need to use a global variable.

Simply acquire the field value when you need it.

For example, here is the modified line of code from your post:

var SumFinal = (sum / this.getField("PeriodVar").value); 

You should also learn to debug with the console window, there's a tutorial on it here:

Free Video Content & Full Listing of Available Videos

Thom Parker - Software Developer at PDFScriptingUse the Acrobat JavaScript Reference early and often
M.Hasanin
M.HasaninAuthor
Inspiring
April 28, 2018

Thank you

BestMohammad Hasanin