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
PA Virtual Workshop Carousel 768x460.png

Register for a Free Workshop

This training provides practical hands-on experience in creating Power Apps solutions in a full-day of instructor-led App creation workshop.

Microsoft Build 768x460.png

Microsoft Build is May 24-26. Have you registered yet?

Come together to explore latest innovations in code and application development—and gain insights from experts from around the world.

May UG Leader Call Carousel 768x460.png

What difference can a User Group make for you?

At the monthly call, connect with other leaders and find out how community makes your experience even better.

Top Solution Authors
Top Kudoed Authors
Users online (1,403)