Пользовательский валидатор ASP.Net JQuery для нескольких полей

Я пытаюсь выполнить проверку нескольких полей с помощью пользовательского валидатора в ASP.net с помощью JQuery, но не могу заставить его работать.

Существует раскрывающийся список, который содержит два значения, на основе этих значений появляются другие элементы.

Поэтому, если пользователь выбирает вариант 1, появляется текстовое поле, если он выбирает вариант 2, текстовое поле исчезает и появляются два раскрывающихся списка.

В зависимости от того, какой вариант они выберут, я хочу проверить их ввод.

То, что у меня есть до сих пор, что не работает,

.ASPX

<asp:DropDownList ID="drpHeight" runat="server">
                            <asp:ListItem Value="CMs">CMs</asp:ListItem>
                            <asp:ListItem Value="Feet">Feet</asp:ListItem>
                        </asp:DropDownList>

<asp:TextBox ID="txtCm" runat="server" Width="100px"></asp:TextBox>
                         <asp:CustomValidator ID="CustomValidator9" runat="server" ErrorMessage="Please select you height" 
                    ClientValidationFunction = "ValidateHeight" Display="Dynamic" ControlToValidate="txtCm" ValidateEmptyText="true"></asp:CustomValidator> 
<asp:RegularExpressionValidator ID="revCm" runat="server" 
                    ControlToValidate="txtCm" Display="Dynamic" 
                    ErrorMessage="Please enter a valid number" 
                    ValidationExpression="^([0-9]*|\d*\.\d{1}?\d*)$" SetFocusOnError="True"></asp:RegularExpressionValidator>


<br />
<br />

<asp:DropDownList ID="drpFeet" runat="server">
                            <asp:ListItem Value="-1">Select...</asp:ListItem>
                            <asp:ListItem Value="1"></asp:ListItem>
                            <asp:ListItem Value="2"></asp:ListItem>
                            <asp:ListItem Value="3"></asp:ListItem>
                            <asp:ListItem Value="4"></asp:ListItem>
                            <asp:ListItem Value="5"></asp:ListItem>
                            <asp:ListItem Value="6"></asp:ListItem>
                            <asp:ListItem Value="7"></asp:ListItem>
                            <asp:ListItem Value="8"></asp:ListItem>
                        </asp:DropDownList>
                            <asp:Label ID="lblFeet" runat="server" Text="Ft"></asp:Label>
                        &nbsp;<asp:DropDownList ID="drpInches" runat="server">
                            <asp:ListItem Value="-1">Select...</asp:ListItem>
                            <asp:ListItem Value="0"></asp:ListItem>
                            <asp:ListItem Value="1"></asp:ListItem>
                            <asp:ListItem Value="2"></asp:ListItem>
                            <asp:ListItem Value="3"></asp:ListItem>
                            <asp:ListItem Value="4"></asp:ListItem>
                            <asp:ListItem Value="5"></asp:ListItem>
                            <asp:ListItem Value="6"></asp:ListItem>
                            <asp:ListItem Value="7"></asp:ListItem>
                            <asp:ListItem Value="8"></asp:ListItem>
                            <asp:ListItem Value="9"></asp:ListItem>
                            <asp:ListItem Value="10"></asp:ListItem>
                            <asp:ListItem Value="11"></asp:ListItem>
                        </asp:DropDownList>
                        &nbsp;<asp:Label ID="lblInches" runat="server" Text="Inches"></asp:Label> 
<br />
<br />

JQuery

        function ValidateHeight(sender, args) {

        if ($('#<%=drpHeight.ClientID%>').val = "CMs") {

            if ($('#<%=txtCm.ClientID%>').val().length > 0) {
                args.IsValid = true;

            }

            else {
                args.IsValid = false;
                return;
            }

        }

        else if ($('#<%=drpHeight.ClientID%>').val = "Feet") {
            args.IsValid = true;
        }
    }
        </script>

На данный момент он не работает, я проверил CM b, но потом он перестал работать, и теперь я не могу понять, почему.

Как лучше всего подойти к этому? У меня есть еще один для веса, который имеет 3 возможности ввода.


person saintsfanuk    schedule 20.03.2013    source источник
comment
Вы можете подумать о предоставлении ожидаемого значения вместе с контролем в каком-либо атрибуте, чтобы JQuery мог прочитать этот атрибут, получить ожидаемое значение и сравнить его с введенным пользователем.   -  person Tigran    schedule 20.03.2013


Ответы (1)


Наконец-то я наткнулся на ответ, я дам ответ всем, кто хочет знать, как это сделать.

Изменил мой клиентский валидатор на:

 <asp:CustomValidator ID="CustomValidator9" runat="server" ErrorMessage="Please select you height" 
                    ClientValidationFunction = "ValidateHeight" Display="Dynamic" ValidateEmptyText="true"></asp:CustomValidator> 

Затем мой JQuery стал

<script type="text/javascript">

    function ValidateHeight(sender, args) {

        var drpHeight = $('#<%=drpHeight.ClientID%>').val();

        if (drpHeight == "CMs") {

            if ($('#<%=txtCm.ClientID%>').val().length > 0) {
                args.IsValid = true;
                return;

            }

            else {
                args.IsValid = false;
                return;
            }

        }

        else if (drpHeight == "Feet") {

            var drpFeet = $('#<%=drpFeet.ClientID%>').val();
            var drpInches = $('#<%=drpInches.ClientID%>').val();

            if (drpFeet == -1 || drpInches == -1) {
                args.IsValid = false;
                return;                    
            }
            else {
                args.IsValid = true;
                return;
            }
        }            

        }
</script>
person saintsfanuk    schedule 20.03.2013