RegularExpressionValidator只检查一次

时间:2013-08-04 09:22:49

标签: asp.net validation reg-expressionvalidator

我有一个表单,我希望客人输入他们的nameaddress等... 在每个字段中,我有一个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 Doesn't reCheck the input 但在我的情况下它并没有真正帮助。

1 个答案:

答案 0 :(得分:0)

您的验证表达式为:

[a-zA-Z' ']

这意味着:恰好是一个字母或一个apostroph或一个空格。

您可能希望使用以下内容:

[\w\s]*

这意味着:任意数量的字母或空格。