C# 在CompareValidator上添加JS验证

C# 在CompareValidator上添加JS验证,c#,javascript,validation,comparevalidator,C#,Javascript,Validation,Comparevalidator,是否可以为CompareValidator添加JS验证函数? 我不能使用CustomValidator。我不确定您是否仍然需要它,但我认为不会,因为这是无法回答的 当然,您不能直接这样做,但是您可以隐藏负责CompareValidator验证的原始函数并引入新的函数。这是可能的,因为所有验证函数都来自全局范围内的ASP.NET,即。。。有争议,但在这种情况下很有帮助 请查找以下完成工作的模块。它向您展示了两种方法。首先调用的addFunction允许您添加一个或多个用于自定义验证的函数。此函数应

是否可以为CompareValidator添加JS验证函数?

我不能使用CustomValidator。

我不确定您是否仍然需要它,但我认为不会,因为这是无法回答的

当然,您不能直接这样做,但是您可以隐藏负责CompareValidator验证的原始函数并引入新的函数。这是可能的,因为所有验证函数都来自全局范围内的ASP.NET,即。。。有争议,但在这种情况下很有帮助

请查找以下完成工作的模块。它向您展示了两种方法。首先调用的addFunction允许您添加一个或多个用于自定义验证的函数。此函数应返回布尔值,并分别使用三个参数验证程序对象目标对象比较对象。第二个名为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();

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

您想比较哪些值?我想比较日期,但由于应用程序可以处理不同的日期格式,comparevalidator无法正常工作。所以我想,如果我能创建自己的验证函数,它会更好。我现在正在重写BaseValidator来解决我的问题,但是有了这个解决方案,我应该回到每一页并重命名验证器。为什么你不能使用CustomValidator呢?那可能会帮助我们更好地帮助你。