必填字段验证器不起作用

时间:2010-11-01 12:51:31

标签: asp.net validation requiredfieldvalidator

我使用了必需的字段验证程序,后跟一个正则表达式验证程序,但是必需的字段验证程序无效......

<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 个答案:

答案 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" />

来源:

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

答案 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(&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>