【问题标题】:Using JQuery to disable RequiredFieldValidators使用 JQuery 禁用RequiredFieldValidators
【发布时间】:2012-03-06 10:32:40
【问题描述】:

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

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 似乎要简单得多,但我不知道为什么它不起作用。

【问题讨论】:

    标签: jquery asp.net validation


    【解决方案1】:

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

    例如

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

    你得到的错误是因为你调用getElementById没有检查它们的返回,所以你使用这个函数的返回抛出错误,不能使用。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 请提供有关您所写答案的更多详细信息。这将有助于其他人清楚地理解它
      猜你喜欢
      • 2011-10-16
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 2010-10-09
      • 2011-01-09
      • 1970-01-01
      • 2012-03-31
      相关资源
      最近更新 更多