RegularExpressionValidator проверяет только один раз

У меня есть форма, в которой я хотел бы, чтобы гости вводили свои name, address и т.д... На каждом поле у ​​меня есть RequiredFieldValidator и RegularExpressionValidator,

Например:

<asp:TextBox ID="mailNameTextBox" runat="server" MaxLength="70" ValidationGroup="mail"></asp:TextBox>
<asp:RegularExpressionValidator ID="mailNameTextBox_RegularExpressionValidator" runat="server" ErrorMessage="Name can only have letters or spaces." ControlToValidate="mailNameTextBox" ValidationExpression="[a-zA-Z' ']" ValidationGroup="mail" Display="Dynamic">*</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="mailNameTextBox_RequiredFieldValidator" runat="server" ErrorMessage="Name field is required." ControlToValidate="mailNameTextBox" ValidationGroup="mail" Display="Dynamic">*</asp:RequiredFieldValidator>

Когда я ввожу имя, которое включает в себя число (т. Е. Не проходит регулярное выражение) и "tab" вне TextBox, RegexValidator мгновенно отображается с *, и форма не может быть отправлена. Но когда я возвращаюсь и удаляю номер (т.е. Regex), Validator похоже, не перепроверяет вводимые данные, и форма всегда будет не в состоянии отправить.

Есть ли способ всегда запускать проверку при выходе из поля, а не только в первый раз (кроме вызова метода проверки при потере фокуса TextBox). Я бы подумал, что это будет автоматически?

Я потратил некоторое время, пытаясь найти ответ на этот вопрос, и я не уверен, как сформулировать свой вопрос, чтобы "тщательно исследовать его", поэтому я извиняюсь, если это дубликат.

Я видел это: ASP.NET: RegularExpressionValidator Не перепроверять ввод, но это не помогло в моем случае.

1 ответ

Решение

Ваше проверочное выражение:

[a-zA-Z' ']

Что означает: ровно одну букву, один апостроф или один пробел.

Вы, вероятно, хотите использовать что-то вроде следующего:

[\w\s]*

Что означает: любое количество букв или пробелов.

Другие вопросы по тегам