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
Super User

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
Dual Super User
Dual Super User

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
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Difinity Conference 2022

Difinity Conference 2022

Register today for two amazing days of learning, featuring intensive learning sessions across multiple tracks, led by engaging and dynamic experts.

European SharePoint Conference

European SharePoint Conference

The European SharePoint Conference returns live and in-person November 28-December 1 with 4 Microsoft Keynotes, 9 Tutorials, and 120 Sessions.

Power Apps Ideas

Changes to Ideas Coming

We are excited to announce a new way to share your ideas for Power Apps!

Top Solution Authors
Top Kudoed Authors
Users online (4,606)