簡體   English   中英

如果使用驗證程序在asp.net中驗證失敗,則更改文本框的CssClass

[英]Change CssClass of a textbox if validation failed in asp.net using validators

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

我怎樣才能做到這一點,什么是無憂無慮的專業方式。

感謝幫助。

RequiredFieldValidator的ErrorMessage屬性可以包含各種HTML標記,因此您可以將Javascript放入其中。

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

您可以從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 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";
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM