Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

How do I add an alert condition to a For loop?

ArrueiraVermelh
Level 3
Level 3

Hello Everyone,

Could anyone give me a hand with this? I am having a hard time adding code to a For loop to get the result I need.

Here is the situation: I am developing a very long form full of conditional inputs. Instead of adding code to each individual field that needs to be shown/hidden upon user input I would rather have a function that looks for fields that start with an arbitrary prefix in their names ("H-").

For example:

  • Question: "Do you have a bachelor degree?"
  • Answers: Yes | No (radio buttons)
    • Yes: call function that shows questions about that bachelor degree
    • No: call function that hides questions about that bachelor degree

Of course the form is a lot more complex than the example above. Anyway, I have a fully functional function that find the fields in question and shows and hides them perfectly.


// Hide/Show fields based on field name prefix (substring)


// sectionName = parent subform where to find the fields (search range)


// endPosition = integer, position of last character to be searched in field name prefix (initial position is always zero)


// prefixString = string that identifies fields affected by this function



function hideFields(sectionName,endPosition,prefixString) {



    var oFields = sectionName.nodes;  


    var nNodesLength = oFields.length; 


     


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


         if (oFields.item(nNodeCount).name.substring(0,endPosition) == prefixString) { 


oFields.item(nNodeCount).presence = "hidden";


       } // close if


    } // close for


// close function


However I need to add functionality to the script above. Before those contextual fields are hidden from the user I would like the function to check if the field contains any values. If the field to be hidden has values the function has to alert the user w/ a message box and proceed only if the user clicks ok to “yes, hide the fields - I know that will delete whatever input in them”.

Note: oFields could be a (sub)form. If the oFields turns out to be a subform the script would need to check each form field (child) under that subform (parent) for values before it prompts the user. I also would like the user to be prompted only once – for instance if we are deleting values from 10 fields in a subform we need just one prompt for all inputs under that given subform. Make sense?

I hit a wall and am not sure where I am making mistakes. I have the code to add the alert condition but when I add that to the function above it the function breaks. Any ideas are very welcome.

Thanks,

Raquel

0 Replies