未定义ValidatorEnable

时间:2012-07-08 13:01:37

标签: asp.net

我正在尝试使用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();"));
    ...
}

4 个答案:

答案 0 :(得分:4)

确保在从任何其他地方致电之前放置了功能ValidatorEnable

答案 1 :(得分:2)

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

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

$(document).ready(function () {
  var validatorMostRecentEmployer = document.getElementById('<% =rfvMostRecentEmployer.ClientID %>');

  ValidatorEnable(validatorMostRecentEmployer, !hasCv);
});

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

答案 2 :(得分:1)

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; 
} 

答案 3 :(得分:0)

在深入研究服务器端代码后,我发现以下代码禁用了客户端脚本并且必须停止注册:

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

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