必填字段验证器不起作用

Sri*_*ava 3 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>
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到问题???

Ahm*_*eed 6

RequiredFieldValidator由客户端触发onchange事件.听起来你期望它被onblur事件触发,因此远离文本框的标签会触发验证.

在跳到那之前,我怀疑这是你所看到的并且验证它实际上是你需要触发的onchange.为此,请在文本框中输入一些文本,选项卡,选项卡,清除文本框,然后再次标记.您现在应该看到RequiredFieldValidator的错误消息,因为它的内容已更改.

回到这个onblur问题.要完成该行为,您可以onblur在代码隐藏中添加该属性,并让它调用ValidatorValidate(...)JavaScript方法,如下所示:

void Page_Load(object sender, EventArgs e)
{
    txtSummary.Attributes.Add("onblur", "ValidatorValidate(" + reqvalSummary.ClientID + ")");
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以在标记中完成相同的操作.首先,添加此脚本块:

<script type="text/javascript">
    function rfvBlur() {
        var rfv = document.getElementById("<%= reqvalSummary.ClientID %>");
        ValidatorValidate(rfv);
    }    
</script>
Run Code Online (Sandbox Code Playgroud)

其次,<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()" />
Run Code Online (Sandbox Code Playgroud)

另一种选择是通过向<asp:TextBox.../>标记添加以下属性来验证整个ValidationGroup (不需要额外的脚本块):

onblur="Page_ClientValidate('Valtxt')"
Run Code Online (Sandbox Code Playgroud)