Solved

Validation rule if panel is not hidden by another rule

  • 31 January 2019
  • 5 replies
  • 239 views

Badge +7

Hi

 

Would anyone know how to set a validation rule to trigger if a panel is made visible by another Formatting type rule and the people picker in that panel is empty?

 

I want to prompt the user to fill out the people picker in the panel if it is not hidden.

 

Thanks in advance.

icon

Best answer by MegaJerk 1 February 2019, 15:59

View original

5 replies

Userlevel 5
Badge +14

Without seeing your existing Rule or Form, it should still be relatively straight forward. 

Consider the Rule that is hiding the Panel and Controls. 

If "X" is True => Hide Panel 

That means that if you wanted to make a validation rule inside of the panel to consider it's visibility, you'd need to reverse the logic! 

If "X" is False => Validate Control

Additionally, because you want validation to fail if the field is empty you can combine that idea with the first part: 

If "X" is False AND This Control is Empty => Control is Invalid! 

In practice the rule would look something similar to: 

YesNo_Control_Reference && isNullOrEmpty(People_Control_Reference)

Here is a simple mockup using a Yes / No checkbox and a Panel with a People Picker Control inside of it: 


Here is the Rule for the Panel: 

(Notice the "!" at the beginning of the Control Name Reference. That 'inverts' the boolean value of the control. So an Unchecked Control will equal true instead of false, and a checked control will equal false instead of true. This way the Panel stays hidden until we check the box!) 

Now we just need to add a rule to our People Picker Control: 

If you click on the little 'F of x' (aka: f(x)) button, you'll be presented with the Formula Builder where you'll have access to all of your Control References and Runtime Functions which you can easily insert into your formula as shown. 

(Note: For a Control to show up in the 'Named Controls' tab, it must be given an actual name otherwise it will not be there. In this case I have named the Yes/No Control as 'Show_Panel') 

Now when you Preview the form, you'll see no Panel: 

Until you check the 'Show Panel' box:

If you try to save without putting something in there, you'll be greeted with an error:

Inserting a valid person though will allow you to pass the validation test: 

I hope that this helps you along your way. 

Badge +7

@MegaJerk 

 

Thanks for that. I have a panel that unhides based on multiple conditions:

 

Form your post I guessed that perhaps I need ot apply the validation to the people picker inside the panel, so, building on the rule that shows the panel, I added an AND clause to check the peoiple picker but without success:

 

or(contains(BProjectCategory,"ProjectTypeA"),or(contains(BProjectCategory,"ProjectTypeB"),or(contains(BProjectCategory,"ProjectTypeC"),and(isNullOrEmpty({Self})))))

The rule makes the field show in red but after entering a name in the people picker, it still doesn't validate.

 

I have used this structure on another rule that worked fine but can't get this to work.

 

Badge +7

Ok I got this to work.

 

My panel is hidden using this rule:

 

or(contains(ProjectCategory,"ProjectA"),or(contains(ProjectCategory,"ProjectB"),or(contains(ProjectCategory,"ProjectC"),and(not(contains(RiskBox,"Low"))))))

(When the ProjectCategory is not one of the three values AND RiskBox is Low, it shows.

 

On the poepl picker control I added a new validation rule and used the code below. I had to repeat th conditions as I don't have another control that becomes true/false when the panel is unhidden.

 

 

or(contains(BProjectCategory,"Core Research Project"),or(contains(BProjectCategory,"Internal Capability Funding"),or(contains(BProjectCategory,"HVM Catapult Funding")))) && isNullOrEmpty({Self})

This is now working.

 

Thanks @MegaJerk: I needed the bit in your example where you added the rule to the people picker control and 

&& isNullOrEmpty({Self})

 

Userlevel 5
Badge +14

Awesome to hear! Glad that it worked out! 

Badge +4

Hi all,


need to seek your expertise.


I have a Nintex form with two fields as follows:


Accessby : drop down field


Approval : people field (hidden by default, shown only based on the value of Accessby)


 



  1. I need to hide Approval by default and show Approval field only when Accessby is showing 3 values e.g. "Cat1" "Cat2" "Cat3" (applied hide rule which is working fine)

  2. When Approval field is shown, I want to make sure users fill in at least one person and not leave as empty field.


 


I tried the following at the Rule section of the Approval field, but the system does not do Step 2 above, what is the correct formula to ensure that the Approval field is not empty when shown? :



  1. and(isNullOrEmpty({Self}), or(equals(Accessby, "Cat1"), equals(Accessby, "Cat2"), equals(Accessby, "Cat3")))

  2. isNullOrEmpty({Self}) and (Accessby == "Cat1" or Accessby == "Cat2"or Accessby == "Cat3") 

  3. isNullOrEmpty({Self}) && (Accessby == "Cat1" || Accessby == "Cat2" || Accessby == "Cat3")

  4. "Show_panel" does not show up in my system? wonder why? 


 


When I tried isNullOrEmpty({Self}) alone, the system immediate prompt me that the Approval field is empty even though the Approval field is hidden (note that I did not tick the "validate when hidden")


 

Reply