gpt4 book ai didi

javascript - 同一控件上的多个 ASP.NET 验证器 - Page_Validator.isValid 始终保持 true

转载 作者:行者123 更新时间:2023-11-28 01:31:46 25 4
gpt4 key购买 nike

我使用此 JavaScript 代码是为了在验证失败后突出显示文本框和其他控件(在其上指定了 ASP.NET 验证器)。

<script src="_scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
HighlightControlToValidate();
$('#<%=btnSave.ClientID %>').click(function() {
if (typeof (Page_Validators) != "undefined") {
for (var i = 0; i < Page_Validators.length; i++) {
if (!Page_Validators[i].isvalid) {
$('#' + Page_Validators[i].controltovalidate).css("background", "#f3d74f");
}
else {
$('#' + Page_Validators[i].controltovalidate).css("background", "white");
}
}
}
});
});

function HighlightControlToValidate() {
if (typeof (Page_Validators) != "undefined") {
for (var i = 0; i < Page_Validators.length; i++) {
$('#' + Page_Validators[i].controltovalidate).blur(function() {
var validatorctrl = getValidatorUsingControl($(this).attr("ID"));
if (validatorctrl!= null && !validatorctrl.isvalid) {
$(this).css("background", "#f3d74f");
}
else {
$(this).css("background", "white");
}
});
}
}
}
function getValidatorUsingControl(controltovalidate) {
var length = Page_Validators.length;
for (var j = 0; j < length; j++) {
if (Page_Validators[j].controltovalidate == controltovalidate) {
return Page_Validators[j];
}
}
return null;
}
</script>

只要同一控件上指定的 ASP.NET 验证器不超过一个,该脚本就可以正常工作。不幸的是,如果在同一个控件上指定了多个 ASP.NET 验证器并且验证失败,则相关控件不会突出显示。

使用 Chrome 开发人员工具进行调试后,我发现每当在同一控件上指定多个 ASP.NET 验证器时,相关 ASP.NET 验证器的 isValid 属性始终设置为“true”,即使验证也是如此失败。如果同一控件上的 ASP.NET 验证器减少为一个验证器,则当验证失败时,isValid 属性将设置为“false”,这是应该的。

请问为什么会出现这种情况?我该如何解决这个问题?谢谢。

最佳答案

如果我正确地阅读了这段密集的代码,那么您的代码将循环遍历每个验证器,然后获取关联控件的第一个验证器。

因此,一个控件可能有 3 个验证器,然后对于这三个验证器中的每一个,它将获得相同的控件,然后是该控件的第一个验证器。

而不是使用:

getValidatorUsingControl($(this).attr("ID"))

只需使用:

$('#' + Page_Validators[i])[0]

实际上,这行不通,因为当字段模糊时,我将超出范围或值发生变化,但请按照这些思路做一些事情。

关于javascript - 同一控件上的多个 ASP.NET 验证器 - Page_Validator.isValid 始终保持 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com