• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Disable Javascript warning window?

New Here ,
Jan 10, 2018 Jan 10, 2018

Copy link to clipboard

Copied

Hello,
I made a pdf form that has a table that has calculated fields, in them there is a formula that takes the data from the fields of its line and the result serves as the starting value of the lower line.
But since at the beginning there are not all the fields with their respective values, the formula lacks arguments and the Javascript warning sale appears informing me of it.
Is there any way to disable the Javascript warning window?
Thank you so much

TOPICS
Acrobat SDK and JavaScript

Views

1.1K

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

Community Expert , Jan 11, 2018 Jan 11, 2018

There's a mathematical error in your code. You're in effect performing a division by zero, even if it doesn't look like it.

The error comes from this part of the formula (I'm taking "Dp A" as an example):

Math.pow(this.getField("D A").value, -4.82)

This is identical to 1/(x^4.82), x being the value of the field. But when the field is empty, this value is zero, and the result is:

1/(0^4.82) = 1/0

Which is illegal.

The solution is to add an if-condition that only performs this calculation if "D A" is no

...

Votes

Translate

Translate
Community Expert ,
Jan 10, 2018 Jan 10, 2018

Copy link to clipboard

Copied

The solution is to either default the field values so that the calculation completes without error, or use a script for the calculation that includes checks on the input values.

Could you post a screenshot of the warning window?

Thom Parker - Software Developer at PDFScripting
Use the Acrobat JavaScript Reference early and often

Votes

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 Expert ,
Jan 10, 2018 Jan 10, 2018

Copy link to clipboard

Copied

Another solution is to not use an automatic calculation and use a button that the user will press to calculate.

Votes

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
LEGEND ,
Jan 10, 2018 Jan 10, 2018

Copy link to clipboard

Copied

You can use the "if ... then ... else" statement to control the running a custom calculation script. You need to come up with a procedure to differentiate between the field not having an valid value for processing and one fore which a valid value does not exist. Usually this is done by testing a field's string value to see if it is a null string, "", or a zero value. A null value would only exist if there has been no calculation performed  and a zero value would indicate that the row has had the calculation performed. Since the final calculation is dependent upon the calculation for the row, you will need to preform this test for the calculation for the row. You need to be aware that the value for a null string in a field formatted as a number is zero just like the calculated value zero. To differentiate between a null string value and a zero value one uses the "valueAsStirng" property and not the "value" property. In a table of repeated calculations I would create a document level function to take the variable input values and return the result of the calculation to the calling of the function The function would return a null string if the calculation was not performed and the numeric result of the calculation if the calculation had been performed. All of this will require the use of custom JavaScript code.

Votes

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
New Here ,
Jan 11, 2018 Jan 11, 2018

Copy link to clipboard

Copied

Thank you all for your ideas,
Attached is the link to the pdf that I am creating with the table and the form with all its fields.
As you can see the option of assigning default values to all the fields involved in the final calculation I have already done so, however the warning message continues to appear.
In order to understand the concept a bit better, I commented that the table calculates the loss of load in a natural gas pipeline; the nodes represent specific points of the installation where an equipment is installed, for example.
The form is for general use, in various conditions, for which the user may need to fill only the first line (one node) or can use all of them.
But every time you enter a value, whatever the field, the javascript performs the entire calculation and that is where the warning message appears so annoying.

Formula.pdf - Google Drive

Votes

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 Expert ,
Jan 11, 2018 Jan 11, 2018

Copy link to clipboard

Copied

LATEST

There's a mathematical error in your code. You're in effect performing a division by zero, even if it doesn't look like it.

The error comes from this part of the formula (I'm taking "Dp A" as an example):

Math.pow(this.getField("D A").value, -4.82)

This is identical to 1/(x^4.82), x being the value of the field. But when the field is empty, this value is zero, and the result is:

1/(0^4.82) = 1/0

Which is illegal.

The solution is to add an if-condition that only performs this calculation if "D A" is not empty or zero, like this:

if (Number(this.getField("D A").valueAsString)==0) event.value = "";

else event.value =

     (25078 * 0.6 * (this.getField("Le A").value) *

     (Math.pow(this.getField("Q A").value, 1.82)) *

     (Math.pow(this.getField("D A").value, -4.82))) *

     (this.getField("FSA").value);

Votes

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