Можно ли заставить CompareValidator принимать числа с запятыми? - PullRequest
5 голосов
/ 01 сентября 2010

Я делал проверку типа Double для поля ввода на веб-странице, но теперь мне нужно разрешить запятые.Можно ли это сделать с помощью CompareValidator или мне нужно использовать валидатор регулярных выражений?

1 Ответ

8 голосов
/ 01 сентября 2010

Вместо использования Type="Double", попробуйте использовать Type="Currency".Он должен принимать значения с запятыми и без запятых, однако он не будет принимать более 2 десятичных знаков.

Вот пример:

<asp:TextBox runat="server" ID="TextBox1" />
<asp:CompareValidator runat="server" ID="cValidator" ControlToValidate="TextBox1"
     Type="Currency" Operator="DataTypeCheck" EnableClientScript="true"
     ErrorMessage="Invalid format!" Display="Dynamic" />

В противном случае будет работать RegularExpressionValidator в сочетании сRequiredFieldValidator для проверки пустых записей (валидатор регулярных выражений не предотвращает пустые записи).Вы можете использовать CustomValidator, но вам потребуется придумать процедуру проверки на стороне клиента в JavaScript, если вы не хотите полагаться исключительно на проверку на стороне сервера с обратной передачей.Кроме того, решение на стороне клиента может включать регулярное выражение, и в целом требуется дополнительная проверка, хотя и не слишком сложная.

В этом примере используется RegularExpressionValidator:

<asp:TextBox runat="server" ID="TextBox1" />
<asp:RequiredFieldValidator runat="server" ID="rfValidator" Display="Dynamic"
     ControlToValidate="TextBox1" ErrorMessage="Required!" />
<asp:RegularExpressionValidator ID="reValidator" runat="server"
       ControlToValidate="TextBox1" 
       EnableClientScript="True"
       ErrorMessage="Invalid Format!" 
       Display="Dynamic"
       ValidationExpression="(\d{1,3}(,\d{3})*\.\d{2})|(\d+(\.\d{2})?)" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...