3

我使用了一个必填字段验证器,后跟一个正则表达式验证器,但必填字段验证器不起作用.....

<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="[^&lt;&gt;&amp;#!]*" ValidationGroup="Valtxt">
        Invalid characters(&lt;&gt;&amp;#!) are not allowed
</asp:RegularExpressionValidator>

<asp:RequiredFieldValidator ID="reqvalSummary" runat="server"
    ControlToValidate="txtSummary" ErrorMessage="Summary is required"
    ValidationGroup="Valtxt" Display="Dynamic">
</asp:RequiredFieldValidator>

谁能看到问题???

4

4 回答 4

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')"
于 2010-11-01T15:42:46.987 回答
4

将此行添加到web.config<appSettings>部分对我有用(当项目升级到 .NET 4.5 时所有验证器都停止工作时,我遇到了问题):

<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />

资源:

http://forums.asp.net/t/1876231.aspx?ASP+Net+4+5+Validation+Controls+not+working+with+AJAX+ToolkitScriptManager1

于 2014-01-22T21:10:44.293 回答
1

为什么不更改“RegEx”验证器的正则表达式来检查文本框是否为空,而不是使用另一个验证器?

无论如何,您可能没有为按钮或引发回发的控件指定 ValidationGroup="Valtxt" 。只需将 ValidationGroup="Valtxt" 添加到将帖子提升到页面的按钮或服务器控件

于 2010-11-01T16:09:11.520 回答
-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(&lt;&gt;&amp;#!) are not allowed" Text="*"
    ValidationExpression="[^&lt;&gt;&amp;#!]*" ValidationGroup="Valtxt">

</asp:RegularExpressionValidator>

<asp:RequiredFieldValidator ID="reqvalSummary" runat="server"
    ControlToValidate="txtSummary" ErrorMessage="Summary is required" Text="*"
    ValidationGroup="Valtxt">
</asp:RequiredFieldValidator>
于 2011-01-06T13:34:45.020 回答