我有两个关于ASP中客户端验证的问题,涉及以下设置:
我有一些javascript,如果他们无法验证,则会将错误样式应用于表单元素:
var val = Page_ClientValidate();
if (!val) {
var i = 0;
for (; i < Page_Validators.length; i++) {
if (!Page_Validators[i].isvalid) {
$("#" + Page_Validators[i].controltovalidate).parent().removeClass("valid").addClass("invalid");
} else {
$("#" + Page_Validators[i].controltovalidate).parent().removeClass("invalid").addClass("valid");
}
}
}
return val;
对parent()的调用引用了一个asp:Panel,它包含每个单独的表单元素及其验证器。我的问题是,如果我为控件分配了多个验证器,并且第一个验证器失败但第二个验证器失败,则由于操作顺序,最后应用“有效”样式。我有两个问题。值得注意的是,我对JavaScript非常陌生,以前只是滥用回发来进行所有验证。
问题#1:
客户端验证是否有良好的文档来源?我似乎找不到任何东西。例如,这个Page_ClientValidate()调用来自哪里?我可以做什么其他电话?那么Page_Validators呢? controltovalidate中存在哪些成员?有吗?它只是一个DOM元素吗?我知道自己想要做什么来解决这个问题:
get parent
valid = true
for each validator in parent
if validator does not validate
valid = false
break
if valid
apply valid style
else
apply invalid style
但我甚至不知道如何做到这一点。那么,我是否可以使用任何好的文档来解决这个问题?
问题#2:
假设我得到#1的好答案,我会自己解决这个问题,但是......
我如何做我在上面的伪代码中所描述的内容,或者我不能按照我的方式进行操作?
答案 0 :(得分:0)
问题#1:MSDN is a great source of information on this, start here。
问题2:尝试这种方法:
var val = Page_ClientValidate();
if (!val) {
$(".invalid").removeClass("invalid"); //Remove invalids
var i = 0;
for (; i < Page_Validators.length; i++) {
if (!Page_Validators[i].isvalid) {
$("#" + Page_Validators[i].controltovalidate).parent().removeClass("valid").addClass("invalid");
} else {
$("#" + Page_Validators[i].controltovalidate).parent(":not(.invalid)").addClass("valid");
//Only apply to those not already invalid
}
}
}
return val;