Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Disable form fields

Avatar

Level 2

I would like to disable all the form fields (text and dropdown lists) except the submit button, reset and print button when a user enters their signature in the signature text field on the form. I have the following code currently but its locking the buttons as well.

for

(var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {

var

oFields = xfa.layout.pageContent(nPageCount, "field");

var

nNodesLength = oFields.length;

for

(var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {

oFields.item(nNodeCount).access =

"readOnly";

}

}

Is there a way we can only disable the fields and not the buttons.

1 Accepted Solution

Avatar

Correct answer by
Former Community Member

Ok, so you have to change your operator to && and it should be somthink like:

for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {
     var oFields = xfa.layout.pageContent(nPageCount, "field");

     var nNodesLength = oFields.length;
           for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
            
          if (  (oFields.item(nNodeCount).name != "Button3") && (oFields.item(nNodeCount).name != "Button4") )

                       {
                        oFields.item(nNodeCount).access ="readOnly";
                        }
}
}

Yan.

View solution in original post

6 Replies

Avatar

Former Community Member

Hi Ram,

This one will work for you:

for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {
     var oFields = xfa.layout.pageContent(nPageCount, "field");

     var nNodesLength = oFields.length;
           for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
                if (oFields.item(nNodeCount).ui.oneOfChild.className != "button")

                       {
                        oFields.item(nNodeCount).access ="readOnly";
                        }
}
}                

Yan.

Avatar

Level 2

Thanks Yan

It works great! However, I have multiple buttons on my form that I would like keep active..I have written my code below but doesnt work.

for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {

     var oFields = xfa.layout.pageContent(nPageCount, "field");

     var nNodesLength = oFields.length;

           for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {

                if (oFields.item(nNodeCount).name !=="Button1"|oFields.item(nNodeCount).name !=="Button2")

                       {

                        oFields.item(nNodeCount).access ="readOnly";

                        }

}

Any suggestions would be greatly appreciated!

Avatar

Former Community Member

Hi Ram,

The syntax is "!=" not "!==" as you wrote in your code.


Yan.

Avatar

Level 2

Hello Yan,

Thanks for finding that. I changed the operator to != but still doesnt work. Both the buttons are still disabled.

Avatar

Correct answer by
Former Community Member

Ok, so you have to change your operator to && and it should be somthink like:

for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {
     var oFields = xfa.layout.pageContent(nPageCount, "field");

     var nNodesLength = oFields.length;
           for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
            
          if (  (oFields.item(nNodeCount).name != "Button3") && (oFields.item(nNodeCount).name != "Button4") )

                       {
                        oFields.item(nNodeCount).access ="readOnly";
                        }
}
}

Yan.

The following has evaluated to null or missing: ==> liqladmin("SELECT id, value FROM metrics WHERE id = 'net_accepted_solutions' and user.id = '${acceptedAnswer.author.id}'").data.items [in template "analytics-container" at line 83, column 41] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign answerAuthorNetSolutions = li... [in template "analytics-container" at line 83, column 5] ----