CustomFieldValidator ClientValidationFunction 未触发且没有错误
CustomFieldValidator ClientValidationFunction not firing and no error
我添加了 CustomValidator ClientValidationFunction 来验证我的 Web 应用程序中的文本字段,但是,此验证函数根本没有触发。
这是我的验证函数:
function isValidYear(sender,args)
{
alert('Me here');
var year = document.getElementById('MainContent_frmArticle_Source_txtYear').value;
var currentdate = new Date();
var regex = new RegExp("^\d{4}$");
if (year > 1 && year <= currentdate.getFullYear() && regex.test(year)) {
alert('IsValid');
args.IsValid = true;
}
else
{
alert('Is Not Valid');
args.IsValid = false;
}
// 我添加这些警报只是为了测试函数是否被触发,但它们从未显示。
这是我的自定义验证器代码:
<asp:TextBox ID="txtYear" runat="server" widtth="20%"></asp:TextBox>
<asp:CustomValidator runat="server" ID="CustomValidateYear" ClientValidationFunction="isValidYear" ControlToValidate="txtYear" ErrorMessage="Please enter a valid year" Display="Static" ForeColor="Red" ></asp:CustomValidator>
更多信息:
我正在使用 Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.114.0 并且在添加验证器后的第一个 运行 我收到 "unobtrusive validation" 的错误所以我按照网站上的步骤操作(我不能记住它是哪一个)将包安装到我的项目中:
<package id="AspNet.ScriptManager.jQuery" version="2.1.4" targetFramework="net45" />
<package id="jQuery" version="2.1.4" targetFramework="net45" />
<package id="Microsoft.AspNet.ScriptManager.MSAjax" version="5.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.ScriptManager.WebForms" version="5.0.0" targetFramework="net45" />
请注意,我不想将不引人注目的验证设置为 None,正如 SO 上的大多数帖子所提到的那样。
您发布的代码有效,只有我注意到您在 js 函数 isValidYear 中错过了右括号 },并检查您是否将其放在 <script type="text/javascript"></script>
中,这样它看起来像
<script type="text/javascript">
function isValidYear(sender, args) {
alert('Me here');
var year = document.getElementById('MainContent_frmArticle_Source_txtYear').value;
var currentdate = new Date();
var regex = new RegExp("^\d{4}$");
if (year > 1 && year <= currentdate.getFullYear() && regex.test(year)) {
alert('IsValid');
args.IsValid = true;
}
else {
alert('Is Not Valid');
args.IsValid = false;
}
}
</script>
另请注意,CustomValidator 不会在空文本上触发,您需要添加 RequiredFieldValidator
顺便说一句,你可以简单地替换你的 document.getElementById('MainContent_frmArticle_Source_txtYear').value
和
args.Value
我添加了 CustomValidator ClientValidationFunction 来验证我的 Web 应用程序中的文本字段,但是,此验证函数根本没有触发。 这是我的验证函数:
function isValidYear(sender,args)
{
alert('Me here');
var year = document.getElementById('MainContent_frmArticle_Source_txtYear').value;
var currentdate = new Date();
var regex = new RegExp("^\d{4}$");
if (year > 1 && year <= currentdate.getFullYear() && regex.test(year)) {
alert('IsValid');
args.IsValid = true;
}
else
{
alert('Is Not Valid');
args.IsValid = false;
}
// 我添加这些警报只是为了测试函数是否被触发,但它们从未显示。
这是我的自定义验证器代码:
<asp:TextBox ID="txtYear" runat="server" widtth="20%"></asp:TextBox>
<asp:CustomValidator runat="server" ID="CustomValidateYear" ClientValidationFunction="isValidYear" ControlToValidate="txtYear" ErrorMessage="Please enter a valid year" Display="Static" ForeColor="Red" ></asp:CustomValidator>
更多信息:
我正在使用 Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.114.0 并且在添加验证器后的第一个 运行 我收到 "unobtrusive validation" 的错误所以我按照网站上的步骤操作(我不能记住它是哪一个)将包安装到我的项目中:
<package id="AspNet.ScriptManager.jQuery" version="2.1.4" targetFramework="net45" />
<package id="jQuery" version="2.1.4" targetFramework="net45" />
<package id="Microsoft.AspNet.ScriptManager.MSAjax" version="5.0.0" targetFramework="net45" />
<package id="Microsoft.AspNet.ScriptManager.WebForms" version="5.0.0" targetFramework="net45" />
请注意,我不想将不引人注目的验证设置为 None,正如 SO 上的大多数帖子所提到的那样。
您发布的代码有效,只有我注意到您在 js 函数 isValidYear 中错过了右括号 },并检查您是否将其放在 <script type="text/javascript"></script>
中,这样它看起来像
<script type="text/javascript">
function isValidYear(sender, args) {
alert('Me here');
var year = document.getElementById('MainContent_frmArticle_Source_txtYear').value;
var currentdate = new Date();
var regex = new RegExp("^\d{4}$");
if (year > 1 && year <= currentdate.getFullYear() && regex.test(year)) {
alert('IsValid');
args.IsValid = true;
}
else {
alert('Is Not Valid');
args.IsValid = false;
}
}
</script>
另请注意,CustomValidator 不会在空文本上触发,您需要添加 RequiredFieldValidator
顺便说一句,你可以简单地替换你的 document.getElementById('MainContent_frmArticle_Source_txtYear').value
和
args.Value