两件事:
是否可以通过Jquery设置Page.IsValid(Is_Valid)属性,以便我不必使用aspx验证器?我的理解是IsValid属性是只读的吗?
当验证器进入时,是否可以通过Jquery(ofcourse)找出哪些控件导致验证失败?一个示例是带有大量文本框的表单:用户单击按钮,我将结果放在验证摘要中。一切都很好,花花公子。但我也希望通过更改相应的文本框背景让用户知道它们是哪些控件,例如红色。
现在黑客就是我调用自己的JS函数来检查所有文本框以进行验证(再次),然后将css更改为无效的以显示红色。但我认为肯定必须有一种方法来识别哪些控件未通过验证?
有什么见解?
答案 0 :(得分:3)
(A)
是不可能的。 Page.IsValid
由服务器端验证设置,客户端不应该弄乱它。如果客户端验证失败,则不会回发,因此在这种情况下甚至不会调用Page.Validate()
。
AJAX Control Toolkit通过重新绑定验证函数来实现(B)
。您可以尝试以下内容:
[免责声明:我还不熟悉jQuery,所以我会使用普通的JS。随意翻译成适当的jQuery习语。]
for (var i = 0; i < window.Page_Validators.length; ++i) {
var validator = window.Page_Validators[i];
validator.__old_evaluationfunction = validator.evaluationfunction;
validator.evaluationfunction = function(value) {
var element = validator.controltovalidate;
if (!validator.__old_evaluationfunction(value)) {
// Validation failed - turn `element` red, scream at the user, etc.
return false;
} else {
// Validation succeeded - restore `element` to its normal state.
return true;
}
};
}
答案 1 :(得分:2)
所有验证控件都可以进行服务器验证。从客户端覆盖isvalid = false只能阻止回发发生。在服务器端和客户端,您可以枚举验证器的集合,每个ctrl都具有IsValid属性。