如果使用验证器在asp.net中验证失败,则更改文本框的CssClass

时间:2012-01-26 13:25:52

标签: c# asp.net validation

如果asp.net中的验证失败,我想将CssClass更改为txtbox300CommentRED。

我无法找到办法。如果验证失败,我们是否可以告诉RequiredFieldValidator或其他Validators更改txtFullName的CssClass类?

<asp:TextBox ID="txtFullName" runat="server" CssClass="txtbox300Comment"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>

我如何才能实现这一目标,以及无忧无虑或专业的方式。

帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

RequiredFieldValidator的Error Message属性可以包含所有类型的HTML标记,因此您可以将Javascript放入其中。

ErrorMessage="Bad! <script type='text/javascript'>changeclass();</script>"

答案 1 :(得分:2)

您可以从javascript访问验证程序范围,并更改它们正在验证的控件的css类。您可以在提交时运行此脚本。但是,我不确定如何确定特定控件是否有效。

E.g。如果你有一个css类“错误”,你可以执行以下操作:

if (Page_ClientValidate() == false)
{
    if (Page_Validators != null)
    {
        for (i = 0; i < Page_Validators.length; i++)
        {
            var validatedControl = 
                document.getElementById(Page_Validators[i].controltovalidate);
            validatedControl.className = "error";
        }
    }
}

有关详细信息,请参阅How to skin all ASP.Net validators?

不幸的是,WebForms不适合这个。我建议尽可能使用MVC,或尝试xVal for WebForms,一个基于DataAnnotations和jQuery Validate构建的开源验证库。

答案 2 :(得分:1)

在RequiredFieldValidator上设置ControlToValidate =“txtFullName”

if(!RequiredFieldValidator1.IsValid){
    //You might have to adjust where its looking for the control
    TextBox txt = form1.FindControl(RequiredFieldValidator1.ControlToValidate) as TextBox;
    if (txt != null)
    {
        txt.CssClass = "txtbox300Comment";
    }

}