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.
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.
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.
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)
User | Count |
---|---|
234 | |
110 | |
94 | |
59 | |
29 |
User | Count |
---|---|
289 | |
129 | |
104 | |
62 | |
57 |