我有类似的设置:
<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()
但页面本身将有多个验证器,我不希望它们同时弹出。
所以基本的问题是 - 有没有办法可以获得一个与控件“相关”的验证器列表,并强制它们重新验证输入?
(澄清 - 我上面发布的代码只是为了更好地解释我的问题。这不是我正在使用的实际代码)
答案 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");