Expand my Community achievements bar.

SOLVED

Error Handling (How To?)

Avatar

Level 2

Hello,

I have a removeInstance tied to a button in the click event.  I know this will generate a default Adobe error if the minimum number of rows have been reached.

I would like to replace the default Adobe error of "index out of bounds" with a more user friendly error message.

I tried this after the removeInstance, but default error still popped-up:

xfa.host.messageBox("Delete error encountered.  Maximum number of rows deleted.", "Warning",1,0)

Can someone offer assistance?

Thanks

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi,

You could wrap your removeInstance script in an if statement that looks at the number of instances.

if (Table1._Row1.count > 1) {

     Table1._Row1.removeInstance(this.parent.index);

}

You could turn off the Acrobat debugger from automatically opening when an error is encountered (see preferences), but that wont help users.

Hope that helps,

Niall

View solution in original post

5 Replies

Avatar

Level 2

How to simply handle errors in a click event?  I think this is an easy answer, but I am new to FormCalc/Java Script.  I simply want to replace default Adobe error with mine.

Any assistance would be greatly appreciated.

Thanks!

Avatar

Correct answer by
Level 10

Hi,

You could wrap your removeInstance script in an if statement that looks at the number of instances.

if (Table1._Row1.count > 1) {

     Table1._Row1.removeInstance(this.parent.index);

}

You could turn off the Acrobat debugger from automatically opening when an error is encountered (see preferences), but that wont help users.

Hope that helps,

Niall

Avatar

Level 2

Ecellent Niall!  This worked like a charm.  I added an alert so the user would know what was taking place.

Thanks so much for your help.  I knew this was simple.

Avatar

Level 2

Hello,

I am now getting this error:

Error: syntax error near token '{' on line 2, column 72

Here is the code:

if (page1.subform1.TableParent.TableBodyRow.instanceManager.count > 1) {

page1.subform1.TableParent.TableBodyRow.instanceManager.removeInstance(1)

}

Avatar

Level 10

Hi,

The script looks reasonably in order. Can you check that the language is set to JavaScript (and not FormCalc).

I suspect the relative references could be shortened. It just depends on where the button is relative to the repeating row.

Just to note in my previous script the underscore (_) in front of the repeating object name is shorthand for instanceManager. So _TableBodyRow.removeInstance(this.parent.index) should work.

Also, the parameter for the removeInstance() method is the instance number that you want to remove - based on a zero numbering system. So your script will always look to remove the second row. You probably don't want this, so if the button is in the repeating row, passing this.parent.index as the parameter will work better.

Hope that helps,

Niall