如果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>
我如何才能实现这一目标,以及无忧无虑或专业的方式。
帮助表示赞赏。
答案 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";
}
}