我正在尝试使用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();"));
...
}
答案 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;
}
感谢所有为此提供帮助的人。