ASP客户端验证问题

时间:2010-02-22 21:31:24

标签: asp.net javascript validation

我有两个关于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的好答案,我会自己解决这个问题,但是......

我如何做我在上面的伪代码中所描述的内容,或者我不能按照我的方式进行操作?

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;