0

我有一个类似的设置:

<asp:TextBox ID="txtEmail" runat="server"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
    ControlToValidate="txtEmail" ErrorMessage="Required field cannot be left blank."
    Display="Dynamic"/>

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
    ErrorMessage="Invalid email address."    ControlToValidate="txtEmail" 
    ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
    Display="Dynamic"/>

现在,我正在运行某种 js 代码,它将更改文本框的值,并且我想强制验证器再次触发。我使用的 JS 代码是模块化的,所以当它触发时,我不知道验证组的名称,控件是否附加了验证器或其他什么。

我最终使用了

Page_ClientValidate()

但是页面本身会有多个验证器,我不希望它们同时弹出。

所以基本问题是 - 有没有办法让我得到一个与控件“相关”的验证器列表,并强制他们重新验证输入?

(澄清一下 - 我上面发布的代码只是为了更好地解释我的问题。这不是我正在使用的实际代码)

4

1 回答 1

1

您可以将电子邮件验证器与验证组相关联(例如“emailValidationGroup”):

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
    ControlToValidate="txtEmail" ErrorMessage="Required field cannot be left blank."
    Display="Dynamic" ValidationGroup="emailValidationGroup"/>

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
    ErrorMessage="Invalid email address."    ControlToValidate="txtEmail" 
    ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
    Display="Dynamic" ValidationGroup="emailValidationGroup"/>

然后调用:Page_ClientValidate("emailValidationGroup");

于 2013-07-03T13:31:33.287 回答