Измените CssClass текстового поля, если проверка не удалась в asp.net с использованием валидаторов - PullRequest
1 голос
/ 26 января 2012

Я хочу изменить CssClass на txtbox300CommentRED, если проверка в asp.net не удалась.

Я не могу найти способ сделать это.Возможно ли, что мы скажем RequiredFieldValidator или другим Validators изменить класс CssClass txtFullName, если проверка не удалась?

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

Как мне этого добиться, и что такое простой или профессиональный способ сделать это.

Помощь приветствуется.

Ответы [ 3 ]

3 голосов
/ 26 января 2012

Атрибут ErrorMessage RequiredFieldValidator может содержать все виды тегов HTML, поэтому вы можете поместить в него Javascript.

ErrorMessage="Bad! <script type='text/javascript'>changeclass();</script>"
2 голосов
/ 26 января 2012

Вы можете получить доступ к диапазонам валидатора из javascript и изменить класс 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";
        }
    }
}

См. Как обработать все валидаторы ASP.Net? для получения дополнительной информации.

К сожалению, WebForms не подходит для этого.Я рекомендовал бы по возможности использовать MVC или попробовать xVal для WebForms , библиотеку валидации с открытым исходным кодом, основанную на DataAnnotations и jQuery Validate.

1 голос
/ 26 января 2012

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...