我使用了必需的字段验证程序,后跟一个正则表达式验证程序,但是必需的字段验证程序无效......
<asp:TextBox ID="txtSummary" runat="server" TextMode="MultiLine" Width="700px"
CssClass="txtStyle" Font-Names="Arial" MaxLength="1000"
ValidationGroup="Valtxt" TabIndex="2" Rows="4">
</asp:TextBox>
<asp:RegularExpressionValidator ID="regValSummary" runat="server"
ControlToValidate="txtSummary" Display="Dynamic"
ValidationExpression="[^<>&#!]*" ValidationGroup="Valtxt">
Invalid characters(<>&#!) are not allowed
</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="reqvalSummary" runat="server"
ControlToValidate="txtSummary" ErrorMessage="Summary is required"
ValidationGroup="Valtxt" Display="Dynamic">
</asp:RequiredFieldValidator>
任何人都可以看到问题???
答案 0 :(得分:6)
RequiredFieldValidator
由客户端onchange
事件触发。听起来你期望它被onblur
事件触发,这样远离文本框的标签会触发验证。
在跳转之前,我怀疑这是你所看到的,并且要确认它实际上正常工作,你需要触发onchange
。为此,请在文本框中输入一些文本,选项卡,选项卡,清除文本框,然后再次标记。您现在应该看到RequiredFieldValidator的错误消息,因为它的内容已经更改。
返回onblur
问题。要完成该行为,您可以在代码隐藏中添加onblur
属性,并让它调用ValidatorValidate(...)
JavaScript方法,如下所示:
void Page_Load(object sender, EventArgs e)
{
txtSummary.Attributes.Add("onblur", "ValidatorValidate(" + reqvalSummary.ClientID + ")");
}
或者,您可以在标记中完成相同的操作。首先,添加此脚本块:
<script type="text/javascript">
function rfvBlur() {
var rfv = document.getElementById("<%= reqvalSummary.ClientID %>");
ValidatorValidate(rfv);
}
</script>
其次,通过添加<asp:TextBox.../>
来更新onblur="rfvBlur()"
标记,以便它现在看起来像这样:
<asp:TextBox ID="txtSummary" runat="server" TextMode="MultiLine" Width="700px" CausesValidation="true"
CssClass="txtStyle" Font-Names="Arial" MaxLength="1000" ValidationGroup="Valtxt"
TabIndex="2" Rows="4" onblur="rfvBlur()" />
另一个选择是通过将以下属性添加到<asp:TextBox.../>
标记来验证整个ValidationGroup(不需要额外的脚本块):
onblur="Page_ClientValidate('Valtxt')"
答案 1 :(得分:3)
将此行添加到 web.config 的<appSettings>
部分为我工作(当项目升级到.NET 4.5时所有验证程序停止工作时出现问题):
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
来源:
答案 2 :(得分:1)
为什么不更改“RegEx”验证器的正则表达式以检查文本框是否为空而不是使用其他验证器?
无论如何,你可能没有为按钮或引发回发的控件指定ValidationGroup =“Valtxt”。只需将ValidationGroup =“Valtxt”添加到按钮或将帖子提升到页面的服务器控件
答案 3 :(得分:-1)
<asp:TextBox ID="txtSummary" runat="server" TextMode="MultiLine" Width="700px"
CssClass="txtStyle" Font-Names="Arial" MaxLength="1000"
TabIndex="2" Rows="4">
</asp:TextBox>
<asp:RegularExpressionValidator ID="regValSummary" runat="server"
ControlToValidate="txtSummary" ErrorMessage="Invalid characters(<>&#!) are not allowed" Text="*"
ValidationExpression="[^<>&#!]*" ValidationGroup="Valtxt">
</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="reqvalSummary" runat="server"
ControlToValidate="txtSummary" ErrorMessage="Summary is required" Text="*"
ValidationGroup="Valtxt">
</asp:RequiredFieldValidator>