Hi All,
Having some trouble with a LockAllFields script.
I'm trying to make a button which will lock all the fields on a form. I've been using the following script:
myScriptObject.LockAllFields(form1);
This is set to run on mouse up.
I've created a script object in the root (form1) and just called it myScriptObject
Do I need to do anything else with the object at all?
At the moment I'm getting the an error when I press the lock button in Reader (see attached)
What do I need to do to get this working?
Many Thanks!
Hi ,
You can set the access of the fields "readonly" while clicking the button . You can use it either in mouseup or in click event .There must be a parent subform . So you can use the following script . I am not sure but I guess it will be of some worth.
rootsubform.access = "readOnly";
Hope it helps.
Thanks.
http://www.arcpropertysolicitors.com/chtestform.pdf
Thats the test i'm doing above. Would you mind taking a look to tell me where I'm going wrong?
Thanks,
Chris
Here is your corrected form..Check the Click event of the Button. I placed the controls on a body page..
https://acrobat.com/#d=CbKINJFsCkZvgvQatNLBKQ
Few observations..
1) You have used "myScriptObject" in your code but actually you did put a name for your script object. You can check it in Heirarchy..
2) You placed all the controls on the Master Page and the access property was not available for the Master page.
Thanks
Srini
In the form I sent you earlier, follow these steps..
1) goto the Click event of the button and Change the language to "Java Script"
2) Remove all the code in the click event and place the below line..
myScriptObject.LockAllFields(form1);
3) Save the form as Dynamic XML Form instead of Static.
Here is the updated form..
https://acrobat.com/#d=PDEhdSHGdss-qMJer*BHuw
Let me know if you still have issues..
Thanks
Srini
Srini,
Many thanks for the suggestion but the problem is that Acrobat is not allowing me to extend the license so that Reader users can sign the form.
In the past I've never used a signature field, we've just been able to put an ink signature anywhere on the form, even if it's already been locked.
No signature pad, just using your mouse to apply/draw an 'ink signature'.
I'm able to do it on forms that aren't designed in LiveCycle i.e. I've built a test form in Acrobat and extended permissions to Reader and the user was able to apply an ink signature.
Unfortunately, when I add the script to lock the form (which I have to use LiveCycle to do) it removes the option to extend the ink signature permission to Reader (can only allow digital signatures).
Ok I think I have figured this out. The lock all fields is a red herring. That option you are using is simply adding a comment to the form. Comments cannot be added to a dynamic form. If you save your form as a static PDF then that technique will work whether the fields are locked or not.
Paul
Paul,
Thanks for your help, really appreciate it. It seems to be working very well.
Just wondering though... is there a way I can hide a text box after the lock all fields button has been pressed? i.e. I've added a text box with instructions on how to lock the form and then sign it. I'd like these instructions to disappear after the form has been locked.
Is that possible?
Thanks again,
Chris
Hi Paul,
I've renamed the fields that I want to hide as Instructions and Instructions2.
I added
Instructions.presence = "invisible"
Instructions2.presence = "invisible"
to the code in the button, so it looks like:
form1.#subform[5].Button4::click - (JavaScript, client)
myScriptObject.LockAllFields(form1);
Instructions.presence = "invisible"
Instructions2.presence = "invisible"
I can't get it to work when I preview the form. I haven't gone as far as testing it in reader yet.
Is the above correct? Do I need to add any code anywhere else, such as in the myScriptObject variables?
Thanks,
Chris
Sorry ...answering so many questions I get the issues mixed up. Your code looks fine ...can you email the form to LiveCycle8@gmail.com so I can have a look?
Paul
Hello Paul, Hope you are in good spirits today..
I have a simple question I believe. (hopefully)
I am using your lock all fields script and it works great, however I would like to omit a single email submission button from this script. Can you explain how I would do that. This is a very basic, single page form.
The other option would be to add some code to the lock all fields button so it would mailto: after the form was locked.
Sorry if this has already been answered, I looked through the thread and didn't see anything about it.
Thanks so much!
No probs ....
In the function that locks all fields each object on the form is identified and checked for its clsssname - if it is a field then we know that is one of the following (DDList, TextField, NumericField, radio button, checkbox , Button , etc...). We can do a subsequent check to see if it is a button. In my case a named all of my buttons Button1, Button2 etc... so I simply choose each object with a classname of field and a name that has Button for its first 6 chars and I omit that from the lock procedure. I included a modified sample to give you the idea as well here is the modified script object that I used:
/********************************************************************* ****************
Function: LockAllFields
Description: This function will lock all fields.
IN: The parent subform. It could also be an element that contains subform like form1
OUT : nothing
********************************************************************** ****************/
function LockAllFields(myParentObject){
var allChildElements;
var intNumElements;
var currentElement;
var j;
var temp;
//Get all the child nodes of the parent element
allChildElements = myParentObject.nodes;
//Total number of element in the object
intNumElements = allChildElements.length;
//Loop through all the child elements
for(j=0; j< intNumElements;j++){
currentElement = allChildElements.item(j);
//If the element is another subform we'll recusively call the function again
if(allChildElements.item(j).className == "subform"){
LockAllFields(currentElement);
}
//If the objects are fields and they are set to mandatory (validate.nullTest) then we will set the border.fill.color - dependant on object type
else if(currentElement.className == "field"){
//CHeck to see if the field is a button - do not lock buttons
temp = currentElement.name;
if (temp.substring(0,6) != "Button"){
currentElement.access = "readOnly";
}
}
//Check for exclusion groups - Radio Buttons
else if(currentElement.className == "exclGroup"){
for(k=0; k< currentElement.nodes.length;k++){
if(currentElement.nodes.item(k).className == "field"){
//set the color for the radio buttons individually
currentElement.access = "readOnly";
}
}
}
}
}//end function
North America
Europe, Middle East and Africa
Asia Pacific