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

本文关键字:验证 文本 CssClass 失败 net asp 如果 | 更新日期: 2023-09-27 18:21:25

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

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

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

我如何才能做到这一点,以及什么是无障碍或专业的方式。

感谢您的帮助。

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

RequiredFieldValidator的ErrorMessage属性可以包含各种HTML标记,因此您可以在其中放入Javascript。

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

您可以从javascript访问验证器跨度,并更改他们正在验证的控件的css类。您可以在提交时运行此脚本。然而,我不确定如何确定特定控件是否有效。

例如,如果您有一个css类"error",您可以执行以下操作:

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";
        }
    }
}

请参阅如何对所有ASP.Net验证器进行蒙皮?了解更多信息。

不幸的是,WebForms并不适合这种情况。如果可能的话,我建议使用MVC,或者尝试xVal for WebForms,这是一个基于DataAnnotations和jQuery Validate的开源验证库。

ControlToValidate="txtFullName"在RequiredFieldValidator 上设置

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";
    }
}