我在使用telerik控件进行验证脚本时遇到问题

时间:2011-12-15 17:00:11

标签: css c#-4.0 asp.net-ajax telerik jquery-validate

我希望有人知道答案,因为我对使用Telerik控件非常陌生。这是问题,我有一个要求,如果在验证控件上设置了IsValid标志,我必须为连接到验证控件的控件设置背景颜色。我之前的一个要求可能也会影响到它,它基于SetFocusOnError =“true”设置为控件。

所有控件都包含在asp:UpdatePanel中,页面设置了母版页。

所以我所做的是以下设置焦点我覆盖了System.Web.UI.Page类上的Validate函数,如下所示:

        public override void Validate(string group)
    {
        base.Validate(group);

        // get the first validator that failed
        var validator = GetValidators(group)
            .OfType<BaseValidator>()
            .FirstOrDefault(v => !v.IsValid);

        // set the focus to the control
        // that the validator targets
        if (validator != null)
        {
            //Check to see if SetFocusOnError was set.
            if (validator.SetFocusOnError == true)
            {
                Control target = validator
                    .NamingContainer
                    .FindControl(validator.ControlToValidate);

                if (target != null)
                    target.Focus();
            }
        }
    }

这可以工作并将焦点设置到控件上。我接下来要做的就是在我的网页中使用以下内容:

                var OriginalValidatorUpdateDisplay = null;

            if (typeof (ValidatorUpdateDisplay) == 'function') {
                OriginalValidatorUpdateDisplay = ValidatorUpdateDisplay;
                ValidatorUpdateDisplay = NewValidatorUpdateDisplay;
            }

            function NewValidatorUpdateDisplay(val) {
                OriginalValidatorUpdateDisplay(val);
                ValidateControls();
            }

            function ValidateControls() {
                if (window.Page_Validators) {
                        for (var vI = 0; vI < Page_Validators.length; vI++) {
                            var vValidator = Page_Validators[vI];
                            if (vValidator.isvalid) {
                                $("#" + vValidator.controltovalidate).removeClass("error");
                                if ($("#" + vValidator.controltovalidate).parent().find('.riTextBox').length > 0) {
                                    $("#" + vValidator.controltovalidate).parent().removeClass("error");
                                }
                            }
                            else {
                                $("#" + vValidator.controltovalidate).addClass("error");
                                if ($("#" + vValidator.controltovalidate).parent().find('.riTextBox').length > 0) {
                                    $("#" + vValidator.controltovalidate).parent().addClass("error");
                                }
                            }
                        }
                    }                
            }                  

但是,当您第一次加载页面并提交页面进行验证时,css不会更改,但如果再次执行此操作则会更改。哦,AddClass只是添加

    .error .riTextBox
{
    background-color: lightpink !important;
    z-index:6001;
}

到控件。

以前有人遇到过这个吗?

哦我还应该注意,如果我删除Telerik控件并使用asp文本框控件,一切正常,但我无法从项目中删除Telerik控件。

0 个答案:

没有答案