【问题标题】:ValidatorEnable is not definedValidatorEnable 未定义
【发布时间】:2016-09-24 13:08:31
【问题描述】:

我正在尝试使用 javascript 启用和禁用必填字段验证器,但不断收到错误消息 ValidatorEnable 未定义。请在下面找到代码,任何帮助都会很棒。

ASP.Net

<asp:RequiredFieldValidator EnableClientScript="True"  Display="None" ID="rfvMostRecentEmployer" ControlToValidate="txtMostRecentEmployer" runat="server" ErrorMessage="Most recent employer title is a required field"></asp:RequiredFieldValidator>

Javascript

var validatorMostRecentEmployer = document.getElementById('<%= rfvMostRecentEmployer.ClientID %>');

ValidatorEnable(validatorMostRecentEmployer, !hasCv);

背后的代码

protected void Page_Load(object sender, EventArgs e)
{
    rblCV.Attributes.Add("onClick", string.Format("ShowCvOptions();"));
    ...
}

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    确保在从任何其他地方调用之前放置函数ValidatorEnable

    【讨论】:

    【解决方案2】:

    可能是您尝试在包含 asp.net 验证器代码之前运行 JavaScript 代码。

    如果您使用的是 jQuery,请尝试将代码包装在:

    $(document).ready(function () {
      var validatorMostRecentEmployer = document.getElementById('<% =rfvMostRecentEmployer.ClientID %>');
    
      ValidatorEnable(validatorMostRecentEmployer, !hasCv);
    });
    

    (我还采纳了 Ashwin 的建议,这是从 JavaScript 引用 asp.net 控件的正确方法)

    【讨论】:

    • javascript 在点击时运行,我在页面完全加载之前不会点击。有什么想法吗?
    • 可能是您的页面上有另一个 JavaScript 错误,导致无法包含 ValidatorEnable 函数。您是否使用 JavaScript 调试工具(例如 firefox 中的错误控制台)检查了错误? (按CTRL-SHIFT-J打开)
    • 好主意,但 Chrome 控制台中没有 javascript 错误,这真的让我头疼,因为我拥有的代码应该可以工作。感谢您的参与,非常感谢您的帮助。
    【解决方案3】:

    ClientID 可能是问题所在。

    var validatorMostRecentEmployer = document.getElementById('<% =rfvMostRecentEmployer.ClientID %>');
    
    ValidatorEnable(validatorMostRecentEmployer, !hasCv);
    

    更新虽然不是一个优雅的解决方案,但它可以工作,如果没有的话。

    function disableValidator() 
    { 
    var myval = document.getElememtById('<% =rfvMostRecentEmployer.ClientID %>'); 
    myval.style.cssText=""; 
    myval.style.display='none'; 
    myval.style.accelerator=true; 
    } 
    

    【讨论】:

    • 抱歉,这是我插入客户端 ID 的方式,我将更新代码以反映这一点。
    【解决方案4】:

    在挖掘服务器端代码后,我发现以下代码禁用了客户端脚本,并且必须阻止它注册:

    //Clear client side validators
    foreach (BaseValidator bv in Page.Validators)
    {
        bv.EnableClientScript = false;
    }
    

    感谢所有为此提供帮助的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多