Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.

Disable all fields, buttons, etc in Subform

Avatar

Former Community Member
Is there an easy way to disable the contents of a subform?
7 Replies

Avatar

Former Community Member
You can turn the presence of the subform to invisible and all children will be made invisible as well.



You could get all child nodes of the subform and change their access property to readOnly. I have a script function that accepts a node (in your case a subform) and will get all children of that node....then you can do what you want to them.



Post your email address and I will send the sample ...if you want it.

Avatar

Level 6

Will be like this.

subformname.access = "readOnly"; //javaScript

$.access = "readOnly"; //formcalc

update the "subformname" with the name of ur subform which want to make readOnly. Place this on a required event based on ur requirement, both javascript and formcalc sysntaxes are above.

Avatar

Level 2

Raghu,

Thank you for your response.  My request was intended to be a response to pguerette's post:

If anyone has this code, that is what I was asking for.

Avatar

Level 6

If need only at "subform" level please check the thread: http://forums.adobe.com/message/4389004#4389004

If need at "form root" level, Please check the below function.Pass "oParentNode" as root of the form.

function traverse(oParentNode)

{

          var allChildElements;

          var intNumElements;

          var currentElement;

          var i;

          var j;

          // Get all occurances of the parent element

          intNumOccurances = oParentNode.all.length;

          for (i=0; i < intNumOccurances; i++)

          {

                    oCurrentParent = oParentNode.all.item(i);

                     // Get all the child nodes of the parent element

                    allChildElements = oCurrentParent.nodes;

                    // Total number of elements 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 recursively call the function again

                              if (allChildElements.item(j).className == "subform")

                              {

                                        traverse(currentElement);

                                        // If the objects are fields or exclusive groups then we'll encode them

                              } else {

                                        if (currentElement.className == "field" || currentElement.className == "exclGroup")

                                        {

                                                  //Here have the access for both field and value

                                 //your code comes here

                                                  fields += currentElement.name + "\t";

                                                  values += currentElement.rawValue + "\t";

                                          }

                              }

                    }

          }

}          // end traverse function

Hope it may helps.

Avatar

Former Community Member
If the «subform» already has an «access» attribute on its xml template definition, then you can make the subform and all its descendants read-only by setting the subform's «access» attribute to «readOnly», in JavaScript.

Avatar

Former Community Member
can you show me the code around this? I dont think a subform has an access attribute.