验证asp.net(req.field)验证器后显示“已通过”图像或文本

时间:2010-08-06 14:24:42

标签: asp.net validation requiredfieldvalidator

我有以下asp.net代码:

<asp:TextBox CssClass="mf" runat="server" ID="mail1" Width="270" />
<asp:RequiredFieldValidator ID="rfv1" 
                            runat="server" 
                            ControlToValidate="mail1" 
                            Display="Dynamic" />

现在我想显示图像(或文本),如果验证即时通过(没有回发)

jQuery解决方案对我来说也很好,但如果禁用javascript则不会那么安全。

1 个答案:

答案 0 :(得分:2)

如果不依赖外部框架,您可以使用ASP.Net客户端验证框架来处理扩展/高级功能。通过这种方式,您正在使用框架,扩充它而不是替换它。

只需要一点点JavaScript即可实现您想要的行为。

<asp:TextBox CssClass="mf" runat="server" ID="mail1" Width="270" OnChange="showValidationImage();" />
<asp:RequiredFieldValidator ID="rfv1" 
                        runat="server" 
                        ControlToValidate="mail1" ClientIDMode="Static"
                        Display="Dynamic" >
    <img src="../Image/fail.jpg" />
</asp:RequiredFieldValidator>
<img id="imgPass" src="../Image/pass.jpg" style="visibility:hidden" />
<script language="javascript">
    // This function will be called whenever the textbox changes
    // and effectively hide or show the image based on the state of
    // the client side validation.
    function showValidationImage() {
        if (typeof (Page_Validators) == "undefined") return;

        // isvalid is a property that is part of the ASP.Net
        // client side validation framework
        imgPass.style.visibility = rfv1.isvalid ? "visible" : "hidden";
    }
</script>
<br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />

请注意,如果您不使用.Net 4,我将使用ASP.Net 4的功能与ClientIDMode =“静态”,那么您将需要使用标准的<%= rfv1.ClientID %>服务器端包含来获取您的脚本中的客户端ID。