触发验证器使用js验证控件

时间:2013-07-03 13:24:33

标签: javascript asp.net validation

我有类似的设置:

<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()

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

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

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

1 个答案:

答案 0 :(得分: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");