繁体   English   中英

在CompareValidator上添加JS验证

[英]Adding JS Validation on CompareValidator

是否可以为CompareValidator添加JS验证功能?
我不能使用CustomValidator。

我不确定您是否仍需要它,但是我认为不是,因为这没有答案。

好吧,您不能直接执行此操作,但是可以隐藏负责CompareValidator验证的原始函数并引入新的函数。 这是可能的,因为所有验证功能都来自全球范围内的ASP.NET,这是有争议的,但在这种情况下很有用。

请找到以下完成工作的模块。 它为您提供了两种方法。 首先称为addFunction ,您可以添加一个或多个函数进行自定义验证。 此函数应返回布尔值 ,并分别使用三个参数Validator objectTargetObjectCompareObject 第二个名为disableOldFunction的函数可以让您完全摆脱旧的验证函数,如果您所有的函数都有效,则该函数将由模块调用。

    var MyModules = {};
    MyModules.CompareValExtension = function ()
    {
        var functions = new Array();
        var oldFunc = null, disabled = false;

        function myCompareValidatorEvaluateIsValid(val)
        {
            var valid = true;
            if (oldFunc && functions.length)
            {
                for (i in functions)
                {
                    valid = functions[i](val, document.getElementById(val.controltovalidate), document.getElementById(val.controltocompare));
                    if (!valid) { break; }
                }
                if (!disabled && valid)
                {
                    valid = oldFunc(val);
                }
            }
            return valid;
        }

        if (typeof CompareValidatorEvaluateIsValid != 'undefined')
        {
            oldFunc = CompareValidatorEvaluateIsValid;
            window.CompareValidatorEvaluateIsValid = myCompareValidatorEvaluateIsValid;
        }

        var me = {};
        me.addFunction = function (func) { if (typeof func == "function") { functions.push(func); } }
        me.disableOldFunction = function () { disabled = true; }
        return me;
    } ();

用法示例:

    MyModules.CompareValExtension.addFunction(function (val, elem, comp)
    {
        return elem.value == "my value"; 
    });
    MyModules.CompareValExtension.disableOldFunction();

注意:请将该模块放在页面底部的某个位置,以确保默认验证脚本已经到位。 您也可以稍微重写模块以推迟初始化,直到文档准备就绪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM