【问题标题】:Change CssClass of a textbox if validation failed in asp.net using validators如果使用验证器在 asp.net 中验证失败,则更改文本框的 CssClass
【发布时间】:2012-02-19 13:59:52
【问题描述】:

如果在 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>

我怎样才能做到这一点,什么是无忧或专业的方法。

感谢您的帮助。

【问题讨论】:

标签: c# asp.net validation


【解决方案1】:

RequiredFieldValidator 的 ErrorMessage 属性可以包含各种 HTML 标签,所以你可以在里面放 Javascript。

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

【讨论】:

  • 至少对于其他用途来说很好。
【解决方案2】:

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

例如如果您有 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 构建的开源验证库。

【讨论】:

  • 但是 OP 想要改变文本框的类,而不是验证器。
【解决方案3】:

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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多