I have placed a script object on my form to control the field color and it works fine in Adobe Reader X but not in previous versions of Reader and not in Acrobat pro 9.
Can anyone tell me what’s wrong?
The script object looks like this:
form1.#variables[0].RGA_format - (JavaScript, client)
function RGA_colorOld()
xfa.resolveNode("this.ui.#textEdit.border.fill.color").value = "220,220,220";
function RGA_color()
xfa.resolveNode("this.ui.#textEdit.border.fill.color").value = "255,255,255";
And is called from the fields on the docReady event and the Change event by this script:
form1.blanketB.Moder.EftNvnMor::docReady - (JavaScript, client)
RGA_format.RGA_colorOld(this);
form1.blanketB.Moder.EftNvnMor::change - (JavaScript, client)
RGA_format.RGA_color(this);
Regards,
Kirstine
Solved! Go to Solution.
Views
Replies
Total Likes
Hi Kirstine,
When calling the function, you are passing through the object as a parameter. However the function in the script object does not have a corresponding parameter to receive this.
You can probably pass the object reference through as:
RGA_format.RGA_color(this);
However I prefer to declare a variable first and pass this through:
var fieldObj = this.somExpression; // declare a variable to be passed into the function
colourControls.fieldGetsFocus(fieldObj); // calls the function "fieldGetsFocus" in the script object "colourControls"
Notice in the example, I when declaring the function, I have a parameter "fieldObj", to receive the information that is being passed through.
function fieldGetsFocus(fieldObj) // first function
{
...
}
A small point about the function in the script object. I know the function is a single line, but I would prefer to see this wrapped in curly brackets.
Lastly changing the fill requires access to the ui properties. These are different for each object type. For example the script you have is for a textfield. This would not work on a numericfield.
I do have an example here of a function that does what you are looking for: https://acrobat.com/#d=XGj9UEk4lSbDSoArnQU8dQ. Note how I check what the object is and then resolve the correct ui property. This makes the function must more reusable.
Hope that helps,
Niall
Views
Replies
Total Likes
Hi Kirstine,
When calling the function, you are passing through the object as a parameter. However the function in the script object does not have a corresponding parameter to receive this.
You can probably pass the object reference through as:
RGA_format.RGA_color(this);
However I prefer to declare a variable first and pass this through:
var fieldObj = this.somExpression; // declare a variable to be passed into the function
colourControls.fieldGetsFocus(fieldObj); // calls the function "fieldGetsFocus" in the script object "colourControls"
Notice in the example, I when declaring the function, I have a parameter "fieldObj", to receive the information that is being passed through.
function fieldGetsFocus(fieldObj) // first function
{
...
}
A small point about the function in the script object. I know the function is a single line, but I would prefer to see this wrapped in curly brackets.
Lastly changing the fill requires access to the ui properties. These are different for each object type. For example the script you have is for a textfield. This would not work on a numericfield.
I do have an example here of a function that does what you are looking for: https://acrobat.com/#d=XGj9UEk4lSbDSoArnQU8dQ. Note how I check what the object is and then resolve the correct ui property. This makes the function must more reusable.
Hope that helps,
Niall
Views
Replies
Total Likes
Hi Niall
Thanks, it was a great help.
It took me a little time to figure out to add the variables in the Form Properties Menu. Once I had that part too it worked fine.
Beside I was aware that the ui properties are different for each object type. I solved that by making a function for each object type in my form but this is better.
Once again, thanks a lot. I will probably be back again another day.
J Kirstine
Views
Replies
Total Likes
No problem Kristine, I'm glad it helped.
Just one thing, creating a variable via File > Form Properties > Variables, creates a Global variable. This is useful where you need to value that is accessed by different objects.
The script I have uses a Script/Local variable which is only used within the script. For example,
var i = "hello world";
Declares the variable i and assigns a value.
From that point on within the script you can access (and set) i.
this.rawValue = i;
Hope that helps,
Niall
Views
Replies
Total Likes
Views
Likes
Replies