使用 JQuery 禁用 RequiredFieldValidators

Mat*_*att 5 asp.net validation jquery

我正在使用 JQuery 根据组合框的选定值隐藏/显示 div。这部分工作正常。但是,在隐藏 div 时,jquery 函数还应禁用该 div 中的 3 个 RequiredFieldValidators。我一直在网上查找,似乎可以使用以下方法轻松完成:

ValidatorEnable(ValidatorName, false);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用该方法时,没有任何效果,即使 div 被隐藏,RequiredFieldValidators 仍然显示错误。

我的 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>
Run Code Online (Sandbox Code Playgroud)

有人建议我可以使用验证组或自定义验证器,但使用 jquery 似乎更简单,但我不知道为什么它不起作用。

Ari*_*tos 4

您已经将 jQuery 与简单的 javascript 混淆了。在简单的 javascript 中,我们不使用#元素 id 前面的符号。因此,将其从所有getElementById函数中删除,它将起作用。

例如

document.getElementById("<%=CountryValidator.ClientID %>")
Run Code Online (Sandbox Code Playgroud)

您得到的错误是因为您调用时没有getElementById检查它们的返回值,因此您会因使用该函数的返回值而抛出错误,该函数无法使用。