2013-07-03 89 views
0

我有一个类似的设置:触发验证程序验证使用JS控制

<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

您可以将电子邮件验证与验证组(关联例如“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");

+0

我编写的代码是为了是模块化的。我在写作时不知道验证组的名称。目的是这个代码将被'插入'并且可以工作。 – user2110845

+0

如果您知道要更改值的文本框的名称,是不是告诉您要触发哪个验证组? – KennyZ