Ik ben bezig met een webapplicatie waarin prijzen worden ingevoerd. Hierbij mogen prijzen ook ingevoerd met thousand en decimal seperators. De volgende prijzen zijn dus legaal als invoer:
123456
123.456
123.456,00
De volgende prijs echter niet:
123.456,50
Dit omdat er (bewust) voor gekozen is prijzen in de database als integer op te slaan. Met een Int32.Parse en de juiste numberstyles kan ik dit eenvoudig bewerkstelligen:
Nu wil ik graag client javascript validatie voor deze prijsinvoer. Hiervoor gebruik ik een comparevalidator waar ik als Type een integer heb opgegeven:
Deze validator accepteert echter geen thousand en decimal seperator. Als ik type naar currency verander is dit wel het geval, maar dan worden bedragen als 123.456,50 ook geaccepteerd en dat is niet de bedoeling. Ik zoek dus een manier om ook een numberformat bij de comparevalidator te kunnen gebruiken. Weet iemand of dit mogelijk is?
123456
123.456
123.456,00
De volgende prijs echter niet:
123.456,50
Dit omdat er (bewust) voor gekozen is prijzen in de database als integer op te slaan. Met een Int32.Parse en de juiste numberstyles kan ik dit eenvoudig bewerkstelligen:
C#:
1
2
3
4
5
6
7
8
| NumberStyles numStyle = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands; CultureInfo nl = new CultureInfo("nl-NL"); string s = "123.456,00"; try { int i = Int32.Parse(s, numStyle, nl); } catch (FormatException ex) { } // kon niet worden geconverteerd |
Nu wil ik graag client javascript validatie voor deze prijsinvoer. Hiervoor gebruik ik een comparevalidator waar ik als Type een integer heb opgegeven:
HTML:
1
2
3
4
5
6
7
| <form id="form1" runat="server"> <div> <asp:TextBox ID="Text1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> </div> <asp:comparevalidator ID="Comparevalidator1" runat="server" Type="Integer" ErrorMessage="Is niet numeriek" ControlToValidate="Text1" Operator="DataTypeCheck"></asp:comparevalidator> </form> |
Deze validator accepteert echter geen thousand en decimal seperator. Als ik type naar currency verander is dit wel het geval, maar dan worden bedragen als 123.456,50 ook geaccepteerd en dat is niet de bedoeling. Ik zoek dus een manier om ook een numberformat bij de comparevalidator te kunnen gebruiken. Weet iemand of dit mogelijk is?
It’s nice to be important but it’s more important to be nice