Использование JQuery для отключения RequiredFieldValidators - PullRequest
4 голосов
/ 06 марта 2012

Я использую JQuery, чтобы скрыть / показать div в зависимости от выбранного значения поля со списком. Эта часть отлично работает. Однако при скрытии элемента div функция jquery также должна отключить 3 RequiredFieldValidators, которые находятся в этом элементе div. Я искал в Интернете, и кажется, что это легко сделать, используя:

ValidatorEnable(ValidatorName, false);

Но когда я пытаюсь использовать этот метод, ничего не работает, RequiredFieldValidators по-прежнему отображает ошибку, даже если div скрыт.

Моя функция JQuery:

<script type="text/javascript">
        $(document).ready(function () {
            var det = $("#SponsorDetails");
            $(det).hide();
            var all = $("#AllDetails");
            $(all).hide();

            $("#<%=SelectAccount.ClientID %>").click(function () {
                //hide social worker and sponsor stuff
                var value = $("#<%=SelectAccount.ClientID %> option:selected").val();
                if (value == "Social_Worker") {
                    //show social worker stuff
                    $("#AllDetails").show("slow");
                    $("#SponsorDetails").hide("slow");
                    ValidatorEnable(document.getElementById("#<%=AddressValidator.ClientID %>"), false);
                    ValidatorEnable(document.getElementById("#<%=CityValidator.ClientID %>"), false);
                    ValidatorEnable(document.getElementById("#<%=CountryValidator.ClientID %>"), false);

                } else if (value == "Sponsor") {
                    //show sponsor stuff
                    $("#AllDetails").show("slow");
                    $("#SponsorDetails").show("slow");
                    ValidatorEnable(document.getElementById("#<%=AddressValidator.ClientID %>"), true);
                    ValidatorEnable(document.getElementById("#<%=CityValidator.ClientID %>"), true);
                    ValidatorEnable(document.getElementById("#<%=CountryValidator.ClientID %>"), true);

                }
            });

        });


    </script>

Кто-то предложил мне использовать группы валидации или пользовательский валидатор, но использование jquery кажется намного проще, но я не знаю, почему это не сработает.

Ответы [ 2 ]

3 голосов
/ 06 марта 2012

Вы перепутали jQuery с простым javascript. В простом javascript мы не используем символ # перед идентификатором элемента. Поэтому удалите его из всех функций getElementById , и он будет работать.

Например

document.getElementById("<%=CountryValidator.ClientID %>")

Ошибка, которую вы получаете, заключается в том, что вы вызываете getElementById без проверки возврата их, поэтому вы получаете ошибку выброса от использования возврата этой функции, которая не может быть использована.

0 голосов
/ 17 ноября 2017

Вы можете использовать следующий фрагмент кода, чтобы вручную включить валидатор для повторного запуска ... использовать в Jquery

  ValidatorEnable($("[id$='RegularExpressionValidator4']")[0], true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...