Search code examples
c#asp.netrequiredfieldvalidator

How to check if the validator validated and failed validation on the page


I have multiple validators on the page that all work properly when the Submit button is clicked

However, I need to check if the validators have failed when I initiate a postback through a dropdown selected index changed event so that the failed validation messages properly persist stay

In other words I am trying to check if the certain validator has been just fired and failed

I tried the following

  1. I checked the isValid property, but it is always true no matter what
  2. I tried to check Page.IsValid method but it fails without the previous Page.Validate() call
  3. I tried to check if the failed message is visible and present but there no such option for the validator

Thus, is there a way to check if the required validator was just fired and failed?

It seems to be something simple but I still can't find a solution

Thank you very much in advance


Solution

  • Came up with a solution

    HTML

        <asp:UpdatePanel runat="server" id="UpdatePanel1">
        <ContentTemplate>
    
        <table class="innerTable" border="0">
          <tr>
        <td>
            <asp:DropDownList  CssClass="textboxwidth" runat="server" ID="ddOrg" AutoPostBack="true" OnSelectedIndexChanged="ddOrg_SelectedIndexChanged" setCausesValidation="true"></asp:DropDownList>
            <asp:RequiredFieldValidator SetFocusOnError="true" ID="RequiredFieldValidator3" runat="server" Display="Dynamic" ControlToValidate="ddOrg" InitialValue="" ErrorMessage="* Required"></asp:RequiredFieldValidator>
            <input type="hidden" id="hdFirmValidator" runat="server" />
            <input type="hidden" id="hdPhoneValidator" runat="server" />
            <input type="hidden" id="hdPhoneValidatorRegex" runat="server" />
        </td>
    </tr>
    <tr>
        <td>
            <asp:TextBox ID="txtOrgOther" Enabled="false" CssClass="textboxwidth" MaxLength="100" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator SetFocusOnError="true" ID="RequiredFieldValidator12" Enabled="false" runat="server" Display="Dynamic" ControlToValidate="txtOrgOther" ErrorMessage="* Required" ></asp:RequiredFieldValidator>
        </td>
    </tr>
    <tr>
        <td>
            <asp:TextBox CssClass="textboxwidth" ID="txtOrgAddress" TextMode="MultiLine" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator SetFocusOnError="true" ID="RequiredFieldValidator14" runat="server" Display="Dynamic" ControlToValidate="txtOrgAddress" ErrorMessage="* Required" ></asp:RequiredFieldValidator>
        </td>
    </tr>
    <tr>
    <td>
    <asp:TextBox CssClass="textboxwidth" ID="txtOrgPhone" runat="server" MaxLength="30"></asp:TextBox>
    <asp:RequiredFieldValidator SetFocusOnError="true" ID="RequiredFieldValidator15" runat="server" Display="Dynamic" ControlToValidate="txtOrgPhone" ErrorMessage="* Required" ></asp:RequiredFieldValidator>
    <asp:RegularExpressionValidator ID="regexPhone1" ValidationExpression="^.{0,30}" ErrorMessage="*Enter upto 30 digit phone number" runat="server" ControlToValidate="txtOrgPhone"></asp:RegularExpressionValidator>
    </td>
                  </tr>
           </table>
    </ContentTemplate>
    

    JavaScript

        window.onload = function () {
    
        var btnSubmit = document.getElementById("<%=btnSubmit.ClientID%>");
        function SetHiddenFields() {
    
        var firmValidator = document.getElementById("<%=RequiredFieldValidator14.ClientID%>");
        var hdFirmValidator = document.getElementById("<%=hdFirmValidator.ClientID%>");
        hdFirmValidator.value = firmValidator.style.display;
    
        var phoneValidator = document.getElementById("<%=RequiredFieldValidator15.ClientID%>");
        var hdPhoneValidator = document.getElementById("<%=hdPhoneValidator.ClientID%>");
        hdPhoneValidator.value = phoneValidator.style.display;
    
        var phoneValidatorRegEx = document.getElementById("<%=regexPhone1.ClientID%>");
        var hdPhoneValidatorRegex = document.getElementById("<%=hdPhoneValidatorRegex.ClientID%>");
        hdPhoneValidatorRegex.value = phoneValidatorRegEx.style.display;
    
        return true;
    
    }
    
    btnSubmit.onclick = SetHiddenFields; }
    

    Codebehind

        protected void ddOrg_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Srver side code
    
            RequiredFieldValidator3.Validate();
    
            if (hdFirmValidator.Value != string.Empty)
            {
                RequiredFieldValidator14.Validate();
            }
    
            if (hdPhoneValidator.Value != string.Empty)
            {
                RequiredFieldValidator15.Validate();
            }
    
            if (hdPhoneValidatorRegex.Value != string.Empty)
            {
                regexPhone1.Validate();
            }
    
        }