0

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

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

4 回答 4

4

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

于 2012-07-08T13:27:22.837 回答
2

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

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

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

  ValidatorEnable(validatorMostRecentEmployer, !hasCv);
});

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

于 2012-07-08T13:14:54.663 回答
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; 
} 
于 2012-07-08T13:11:01.813 回答
0

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

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

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

于 2012-07-08T18:17:45.517 回答