使用JQuery禁用RequiredFieldValidators

时间:2012-03-06 10:32:40

标签: jquery asp.net validation

我使用JQuery隐藏/显示div,具体取决于组合框的选定值。这部分工作正常。但是,当隐藏div时,jquery函数还应该禁用该div中的3个RequiredFieldValidator。我一直在网上看,似乎可以通过以下方式轻松完成:

ValidatorEnable(ValidatorName, false);

但是当我尝试使用该方法时,没有任何效果,即使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>

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

2 个答案:

答案 0 :(得分:3)

你用简单的javascript混淆了jQuery。在简单的javascript中,我们不在元素id前面使用符号#。所以从所有 getElementById 函数中删除它,它会起作用。

例如

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

你得到的错误是因为你在没有检查它们的情况下调用getElementById,所以你使用这个无法使用的函数返回时会出现throw错误。

答案 1 :(得分:0)

您可以使用以下代码段手动启用验证器以便再次运行...在Jquery中使用

  ValidatorEnable($("[id$='RegularExpressionValidator4']")[0], true);