cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
hpc1
Helper I
Helper I

Input validation

I'm trying to validate the input in a text input field. There should only certain numbers be possible:

1,0 1,1 1,2 - 5,9 and 6 or 6,0

I used the following formula:

Fill: If(IsMatch(txtGrade.Text;"^([1-5]*\,?[0-9]|[6]*\,?[0])?$");White;Red)

This formula however allows the input of e.g. 7 or also 111

What is wrong with my validation expression?

Also I would like to prevent the user to proceed to the next input field if the value entered is incorrect.

 

7 REPLIES 7
Drrickryp
Super User II
Super User II

Hi @hpc1 

Why not have a dropdown with the Items property ["1","0 1","1 1","2 - 5","9 and 6"," 6,0"].  In general, I try limit users from having to enter text by providing them with choices in a dropdown or radio control.   

gabibalaban
Super User II
Super User II

Why don't you use combobox / listbox or dropdown instead to guide the user to allowed data. 

Define the control's items property something like this:

              ["1,0", "1,1","1,2",.....,"5,9","6,0"].

 

On the other way, here is my proposal for Fill property if you still want to use a TextInput control:

If(

      IsMatch (TextInput1.Text,Match.Digit&","&Match.Digit)  

      && (

              Left(TextInput1.Text,1) in ["1","2","3","4","5"]

              ||

                  Left(TextInput1.Text,1)="6"

                 &&

                 Right(TextInput1.Text,1)="0"

           )

      ,White

      ,Red)

To prevent user move forward, in the OnChange property of InputText control use a context variable - bool type like this:

UpdateContext({test:TextInput1.Fill=Color.White})

and then set the DisplayMode of the next TextInput control to:

If(test,Edit,Disabled)

 

Hope it helps... 

Hi @Drrickryp 

 

I made a dropdown first but users requested to be able to make their entries in a text input field.

@AppsBe-Med 

Doggone users!.  Too bad we need them.  I used to say that running a business would be much easier if it wasn't for those darn customers. 

Hi @gabibalaban 

 

Thanks for your answer. Your proposed solution works. 

 

I would also like to accept entries like 3 instead of 3,0 or 5 instead of 5,0. That doesn't work yet.

I think this should be enough:
If(

      (IsMatch (TextInput1.Text,Match.Digit&","&Match.Digit)  

      && (

              Left(TextInput1.Text,1) in ["1","2","3","4","5"]

              ||

                  Left(TextInput1.Text,1)="6"

                 &&

                 Right(TextInput1.Text,1)="0"

           ))

||TextInput1.Text in ["1","2","3","4","5",”6”]

      ,White

      ,Red)

@gabibalaban 

It works. Thank you very much for your help.

Helpful resources

Announcements
PA_User Group Leader_768x460.jpg

Manage your user group events

Check out the News & Announcements to learn more.

Power Query PA Forum 768x460.png

Check it out!

Did you know that you can visit the Power Query Forum in Power BI and now Power Apps

Carousel 2021 Release Wave 2 Plan 768x460.jpg

2021 Release Wave 2 Plan

Power Platform release plan for the 2021 release wave 2 describes all new features releasing from October 2021 through March 2022.

PowerPlatform 768x460.png

Microsoft Learn

Check out our new Discover Your Career Path blog post series and get all the details.

Users online (1,517)